diff --git a/src/test/fuzz/addrman.cpp b/src/test/fuzz/addrman.cpp index a13945a5206..88260b272f2 100644 --- a/src/test/fuzz/addrman.cpp +++ b/src/test/fuzz/addrman.cpp @@ -144,23 +144,23 @@ FUZZ_TARGET(addrman, .init = initialize_addrman) addresses.push_back(ConsumeAddress(fuzzed_data_provider)); } auto net_addr = ConsumeNetAddr(fuzzed_data_provider); - auto time_penalty = std::chrono::seconds{ConsumeTime(fuzzed_data_provider, 0, 100000000)}; + auto time_penalty = ConsumeDuration(fuzzed_data_provider, /*min=*/0s, /*max=*/100000000s); addr_man.Add(addresses, net_addr, time_penalty); }, [&] { auto addr = ConsumeService(fuzzed_data_provider); - auto time = NodeSeconds{std::chrono::seconds{ConsumeTime(fuzzed_data_provider)}}; + auto time = ConsumeTime(fuzzed_data_provider); addr_man.Good(addr, time); }, [&] { auto addr = ConsumeService(fuzzed_data_provider); auto count_failure = fuzzed_data_provider.ConsumeBool(); - auto time = NodeSeconds{std::chrono::seconds{ConsumeTime(fuzzed_data_provider)}}; + auto time = ConsumeTime(fuzzed_data_provider); addr_man.Attempt(addr, count_failure, time); }, [&] { auto addr = ConsumeService(fuzzed_data_provider); - auto time = NodeSeconds{std::chrono::seconds{ConsumeTime(fuzzed_data_provider)}}; + auto time = ConsumeTime(fuzzed_data_provider); addr_man.Connected(addr, time); }, [&] { diff --git a/src/test/fuzz/headerssync.cpp b/src/test/fuzz/headerssync.cpp index b33f4dc728f..f6e574f4044 100644 --- a/src/test/fuzz/headerssync.cpp +++ b/src/test/fuzz/headerssync.cpp @@ -55,13 +55,11 @@ FUZZ_TARGET(headers_sync_state, .init = initialize_headers_sync_state_fuzz) { SeedRandomStateForTest(SeedRand::ZEROS); FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); - auto mock_time{ConsumeTime(fuzzed_data_provider)}; CBlockHeader genesis_header{Params().GenesisBlock()}; CBlockIndex start_index(genesis_header); - if (mock_time < start_index.GetMedianTimePast()) return; - SetMockTime(mock_time); + SetMockTime(ConsumeTime(fuzzed_data_provider, /*min=*/start_index.GetMedianTimePast())); const uint256 genesis_hash = genesis_header.GetHash(); start_index.phashBlock = &genesis_hash; diff --git a/src/test/fuzz/p2p_headers_presync.cpp b/src/test/fuzz/p2p_headers_presync.cpp index c6842a35849..d587137413c 100644 --- a/src/test/fuzz/p2p_headers_presync.cpp +++ b/src/test/fuzz/p2p_headers_presync.cpp @@ -121,7 +121,7 @@ CBlockHeader ConsumeHeader(FuzzedDataProvider& fuzzed_data_provider, const uint2 arith_uint256 target = ConsumeArithUInt256InRange(fuzzed_data_provider, lower_target, upper_target); header.nBits = target.GetCompact(); } - header.nTime = ConsumeTime(fuzzed_data_provider); + header.nTime = TicksSinceEpoch(ConsumeTime(fuzzed_data_provider)); header.hashPrevBlock = prev_hash; header.nVersion = fuzzed_data_provider.ConsumeIntegral(); return header; diff --git a/src/test/fuzz/util.cpp b/src/test/fuzz/util.cpp index a4a319e74b9..f505357d802 100644 --- a/src/test/fuzz/util.cpp +++ b/src/test/fuzz/util.cpp @@ -31,12 +31,17 @@ CAmount ConsumeMoney(FuzzedDataProvider& fuzzed_data_provider, const std::option return fuzzed_data_provider.ConsumeIntegralInRange(0, max.value_or(MAX_MONEY)); } -int64_t ConsumeTime(FuzzedDataProvider& fuzzed_data_provider, const std::optional& min, const std::optional& max) noexcept +NodeSeconds ConsumeTime(FuzzedDataProvider& fuzzed_data_provider, const std::optional& min, const std::optional& max) noexcept { // Avoid t=0 (1970-01-01T00:00:00Z) since SetMockTime(0) disables mocktime. static const int64_t time_min{ParseISO8601DateTime("2000-01-01T00:00:01Z").value()}; static const int64_t time_max{ParseISO8601DateTime("2100-12-31T23:59:59Z").value()}; - return fuzzed_data_provider.ConsumeIntegralInRange(min.value_or(time_min), max.value_or(time_max)); + return NodeSeconds{ConsumeDuration(fuzzed_data_provider, min.value_or(time_min) * 1s, max.value_or(time_max) * 1s)}; +} + +std::chrono::seconds ConsumeDuration(FuzzedDataProvider& fuzzed_data_provider, std::chrono::seconds min, std::chrono::seconds max) noexcept +{ + return 1s * fuzzed_data_provider.ConsumeIntegralInRange(min.count(), max.count()); } CMutableTransaction ConsumeTransaction(FuzzedDataProvider& fuzzed_data_provider, const std::optional>& prevout_txids, const int max_num_in, const int max_num_out) noexcept diff --git a/src/test/fuzz/util.h b/src/test/fuzz/util.h index a7b1bfd54ed..3947ee12a60 100644 --- a/src/test/fuzz/util.h +++ b/src/test/fuzz/util.h @@ -144,7 +144,8 @@ template [[nodiscard]] CAmount ConsumeMoney(FuzzedDataProvider& fuzzed_data_provider, const std::optional& max = std::nullopt) noexcept; -[[nodiscard]] int64_t ConsumeTime(FuzzedDataProvider& fuzzed_data_provider, const std::optional& min = std::nullopt, const std::optional& max = std::nullopt) noexcept; +[[nodiscard]] NodeSeconds ConsumeTime(FuzzedDataProvider& fuzzed_data_provider, const std::optional& min = std::nullopt, const std::optional& max = std::nullopt) noexcept; +[[nodiscard]] std::chrono::seconds ConsumeDuration(FuzzedDataProvider& fuzzed_data_provider, std::chrono::seconds min, std::chrono::seconds max) noexcept; [[nodiscard]] CMutableTransaction ConsumeTransaction(FuzzedDataProvider& fuzzed_data_provider, const std::optional>& prevout_txids, int max_num_in = 10, int max_num_out = 10) noexcept;