[fuzz] Make RandAddr() a free function in fuzz/addrman.cpp

It doesn't require access to CAddrManDeterministic
This commit is contained in:
John Newbery
2021-09-21 10:48:32 +01:00
parent 491975c596
commit 90ad8ad61a

View File

@@ -36,21 +36,11 @@ FUZZ_TARGET_INIT(data_stream_addr_man, initialize_addrman)
} }
} }
class AddrManDeterministic : public AddrMan /**
{
public:
explicit AddrManDeterministic(std::vector<bool> asmap, FuzzedDataProvider& fuzzed_data_provider)
: AddrMan(std::move(asmap), /* deterministic */ true, /* consistency_check_ratio */ 0)
{
WITH_LOCK(m_impl->cs, m_impl->insecure_rand = FastRandomContext{ConsumeUInt256(fuzzed_data_provider)});
}
/**
* Generate a random address. Always returns a valid address. * Generate a random address. Always returns a valid address.
*/ */
CNetAddr RandAddr(FuzzedDataProvider& fuzzed_data_provider, FastRandomContext& fast_random_context) CNetAddr RandAddr(FuzzedDataProvider& fuzzed_data_provider, FastRandomContext& fast_random_context)
EXCLUSIVE_LOCKS_REQUIRED(m_impl->cs) {
{
CNetAddr addr; CNetAddr addr;
if (fuzzed_data_provider.remaining_bytes() > 1 && fuzzed_data_provider.ConsumeBool()) { if (fuzzed_data_provider.remaining_bytes() > 1 && fuzzed_data_provider.ConsumeBool()) {
addr = ConsumeNetAddr(fuzzed_data_provider); addr = ConsumeNetAddr(fuzzed_data_provider);
@@ -82,6 +72,15 @@ public:
} }
return addr; return addr;
}
class AddrManDeterministic : public AddrMan
{
public:
explicit AddrManDeterministic(std::vector<bool> asmap, FuzzedDataProvider& fuzzed_data_provider)
: AddrMan(std::move(asmap), /* deterministic */ true, /* consistency_check_ratio */ 0)
{
WITH_LOCK(m_impl->cs, m_impl->insecure_rand = FastRandomContext{ConsumeUInt256(fuzzed_data_provider)});
} }
/** /**