Mercurial > minori
view dep/fmt/test/fuzzing/chrono-timepoint.cc @ 347:a0aa8c8c4307
dep/anitomy: port to use UCS-4 rather than wide strings
rationale: wide strings are not the same on every platform, and
might not even be Unicode. (while they usually are, its possible
that they are not)
I was *going* to change StringToInt to use a string stream, but
outputting to an integer doesn't seem to work at all with UCS-4,
even though it ought to, so I just rolled my own that uses the
arabic digits only.
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Sun, 23 Jun 2024 10:32:09 -0400 |
parents | 1faa72660932 |
children |
line wrap: on
line source
// Copyright (c) 2021, Paul Dreik // For license information refer to format.h. #include <fmt/chrono.h> #include "fuzzer-common.h" /* * a fuzzer for the chrono timepoints formatters * C is a clock (std::chrono::system_clock etc) */ template <typename C> void doit(const uint8_t* data, size_t size) { using Rep = typename C::time_point::rep; constexpr auto N = sizeof(Rep); if (size < N) return; const auto x = assign_from_buf<Rep>(data); typename C::duration dur{x}; typename C::time_point timepoint{dur}; data += N; size -= N; data_to_string format_str(data, size); std::string message = fmt::format(format_str.get(), timepoint); } extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { try { doit<std::chrono::system_clock>(data, size); } catch (...) { } return 0; }