timeoffsets.cpp
1 // Copyright (c) 2024-present The Bitcoin Core developers 2 // Distributed under the MIT software license, see the accompanying 3 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 5 #include <node/timeoffsets.h> 6 #include <node/warnings.h> 7 #include <test/fuzz/FuzzedDataProvider.h> 8 #include <test/fuzz/fuzz.h> 9 #include <test/util/setup_common.h> 10 11 #include <chrono> 12 #include <cstdint> 13 #include <functional> 14 15 void initialize_timeoffsets() 16 { 17 static const auto testing_setup = MakeNoLogFileContext<>(ChainType::MAIN); 18 } 19 20 FUZZ_TARGET(timeoffsets, .init = initialize_timeoffsets) 21 { 22 FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); 23 node::Warnings warnings{}; 24 TimeOffsets offsets{warnings}; 25 LIMITED_WHILE(fuzzed_data_provider.remaining_bytes() > 0, 4'000) { 26 (void)offsets.Median(); 27 offsets.Add(std::chrono::seconds{fuzzed_data_provider.ConsumeIntegral<std::chrono::seconds::rep>()}); 28 offsets.WarnIfOutOfSync(); 29 } 30 }