1234567891011121314151617181920212223242526272829303132 |
- // 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;
- }
|