Skip to content

Commit 6408b24

Browse files
committed
fuzz: move init code to the CAddrManDeterministic constructor
Move the addrman init code from the test case to a newly added `CAddrManDeterministic` constructor. This way it can be reused by other tests.
1 parent dcd1169 commit 6408b24

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

src/test/fuzz/addrman.cpp

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,23 @@ void initialize_addrman()
2525
class CAddrManDeterministic : public CAddrMan
2626
{
2727
public:
28-
void MakeDeterministic(const uint256& random_seed)
28+
explicit CAddrManDeterministic(FuzzedDataProvider& fuzzed_data_provider)
2929
{
30-
WITH_LOCK(cs, insecure_rand = FastRandomContext{random_seed});
31-
Clear();
30+
WITH_LOCK(cs, insecure_rand = FastRandomContext{ConsumeUInt256(fuzzed_data_provider)});
31+
if (fuzzed_data_provider.ConsumeBool()) {
32+
m_asmap = ConsumeRandomLengthBitVector(fuzzed_data_provider);
33+
if (!SanityCheckASMap(m_asmap)) {
34+
m_asmap.clear();
35+
}
36+
}
3237
}
3338
};
3439

3540
FUZZ_TARGET_INIT(addrman, initialize_addrman)
3641
{
3742
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
3843
SetMockTime(ConsumeTime(fuzzed_data_provider));
39-
CAddrManDeterministic addr_man;
40-
addr_man.MakeDeterministic(ConsumeUInt256(fuzzed_data_provider));
41-
if (fuzzed_data_provider.ConsumeBool()) {
42-
addr_man.m_asmap = ConsumeRandomLengthBitVector(fuzzed_data_provider);
43-
if (!SanityCheckASMap(addr_man.m_asmap)) {
44-
addr_man.m_asmap.clear();
45-
}
46-
}
44+
CAddrManDeterministic addr_man{fuzzed_data_provider};
4745
if (fuzzed_data_provider.ConsumeBool()) {
4846
const std::vector<uint8_t> serialized_data{ConsumeRandomLengthByteVector(fuzzed_data_provider)};
4947
CDataStream ds(serialized_data, SER_DISK, INIT_PROTO_VERSION);

0 commit comments

Comments
 (0)