From 8c09c0c1d18885ef94f79b3f2d073f43269bc95d Mon Sep 17 00:00:00 2001 From: practicalswift Date: Thu, 19 Nov 2020 21:25:14 +0000 Subject: [PATCH] fuzz: Avoid time-based "non-determinism" in fuzzing harnesses by using mocked GetTime() --- src/test/fuzz/banman.cpp | 1 + src/test/fuzz/connman.cpp | 1 + src/test/fuzz/net.cpp | 2 +- src/test/fuzz/rbf.cpp | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/fuzz/banman.cpp b/src/test/fuzz/banman.cpp index fc4a1d92615..0776848a958 100644 --- a/src/test/fuzz/banman.cpp +++ b/src/test/fuzz/banman.cpp @@ -32,6 +32,7 @@ void initialize() void test_one_input(const std::vector& buffer) { FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; + SetMockTime(ConsumeTime(fuzzed_data_provider)); const fs::path banlist_file = GetDataDir() / "fuzzed_banlist.dat"; fs::remove(banlist_file); { diff --git a/src/test/fuzz/connman.cpp b/src/test/fuzz/connman.cpp index 6521c3f3b20..b5d402cdd35 100644 --- a/src/test/fuzz/connman.cpp +++ b/src/test/fuzz/connman.cpp @@ -23,6 +23,7 @@ void initialize() void test_one_input(const std::vector& buffer) { FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; + SetMockTime(ConsumeTime(fuzzed_data_provider)); CConnman connman{fuzzed_data_provider.ConsumeIntegral(), fuzzed_data_provider.ConsumeIntegral(), fuzzed_data_provider.ConsumeBool()}; CAddress random_address; CNetAddr random_netaddr; diff --git a/src/test/fuzz/net.cpp b/src/test/fuzz/net.cpp index a0c8b7aac5a..39b19c6bcd6 100644 --- a/src/test/fuzz/net.cpp +++ b/src/test/fuzz/net.cpp @@ -27,7 +27,7 @@ void initialize() void test_one_input(const std::vector& buffer) { FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); - + SetMockTime(ConsumeTime(fuzzed_data_provider)); const std::optional address = ConsumeDeserializable(fuzzed_data_provider); if (!address) { return; diff --git a/src/test/fuzz/rbf.cpp b/src/test/fuzz/rbf.cpp index 1fd88a5f7b8..58167c394c9 100644 --- a/src/test/fuzz/rbf.cpp +++ b/src/test/fuzz/rbf.cpp @@ -18,6 +18,7 @@ void test_one_input(const std::vector& buffer) { FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); + SetMockTime(ConsumeTime(fuzzed_data_provider)); std::optional mtx = ConsumeDeserializable(fuzzed_data_provider); if (!mtx) { return;