mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-09-13 06:04:42 +02:00
fuzz: share a single mocked steady clock across FuzzedSock instances
Each FuzzedSock used to own its mocked steady clock and call MockableSteadyClock::SetMockTime() directly. Hold the clock by reference to an externally provided FakeSteadyClock instead, so that several FuzzedSock instances sharing a test case (e.g. one per peer, or one created via Accept()) advance a single mocked clock, and the mocking goes through the FakeSteadyClock RAII helper that resets mocktime on destruction. FakeSteadyClock is a LimitOne type, so each fuzz target constructs one instance per iteration and passes it to ConsumeSock / ConsumeNode / the FuzzedSock constructor.
This commit is contained in:
@@ -33,7 +33,8 @@ FUZZ_TARGET(net, .init = initialize_net)
|
||||
{
|
||||
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
|
||||
FakeNodeClock clock{ConsumeTime(fuzzed_data_provider)};
|
||||
CNode node{ConsumeNode(fuzzed_data_provider)};
|
||||
FakeSteadyClock steady_clock;
|
||||
CNode node{ConsumeNode(fuzzed_data_provider, steady_clock)};
|
||||
node.SetCommonVersion(fuzzed_data_provider.ConsumeIntegral<int>());
|
||||
if (const auto service_opt =
|
||||
ConsumeDeserializable<CService>(fuzzed_data_provider, ConsumeDeserializationParams<CNetAddr::SerParams>(fuzzed_data_provider)))
|
||||
@@ -82,8 +83,9 @@ FUZZ_TARGET(local_address, .init = initialize_net)
|
||||
{
|
||||
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
|
||||
FakeNodeClock clock{ConsumeTime(fuzzed_data_provider)};
|
||||
FakeSteadyClock steady_clock;
|
||||
CService service{ConsumeService(fuzzed_data_provider)};
|
||||
CNode node{ConsumeNode(fuzzed_data_provider)};
|
||||
CNode node{ConsumeNode(fuzzed_data_provider, steady_clock)};
|
||||
{
|
||||
LOCK(g_maplocalhost_mutex);
|
||||
mapLocalHost.clear();
|
||||
|
||||
Reference in New Issue
Block a user