@@ -36,52 +36,51 @@ FUZZ_TARGET_INIT(data_stream_addr_man, initialize_addrman)
36
36
}
37
37
}
38
38
39
- class AddrManDeterministic : public AddrMan
39
+ /* *
40
+ * Generate a random address. Always returns a valid address.
41
+ */
42
+ CNetAddr RandAddr (FuzzedDataProvider& fuzzed_data_provider, FastRandomContext& fast_random_context)
40
43
{
41
- public:
42
- explicit AddrManDeterministic (std::vector<bool > asmap, FuzzedDataProvider& fuzzed_data_provider)
43
- : AddrMan(std::move(asmap), /* deterministic */ true, /* consistency_check_ratio */ 0)
44
- {
45
- WITH_LOCK (m_impl->cs , m_impl->insecure_rand = FastRandomContext{ConsumeUInt256 (fuzzed_data_provider)});
46
- }
44
+ CNetAddr addr;
45
+ if (fuzzed_data_provider.remaining_bytes () > 1 && fuzzed_data_provider.ConsumeBool ()) {
46
+ addr = ConsumeNetAddr (fuzzed_data_provider);
47
+ } else {
48
+ // The networks [1..6] correspond to CNetAddr::BIP155Network (private).
49
+ static const std::map<uint8_t , uint8_t > net_len_map = {{1 , ADDR_IPV4_SIZE},
50
+ {2 , ADDR_IPV6_SIZE},
51
+ {4 , ADDR_TORV3_SIZE},
52
+ {5 , ADDR_I2P_SIZE},
53
+ {6 , ADDR_CJDNS_SIZE}};
54
+ uint8_t net = fast_random_context.randrange (5 ) + 1 ; // [1..5]
55
+ if (net == 3 ) {
56
+ net = 6 ;
57
+ }
47
58
48
- /* *
49
- * Generate a random address. Always returns a valid address.
50
- */
51
- CNetAddr RandAddr (FuzzedDataProvider& fuzzed_data_provider, FastRandomContext& fast_random_context)
52
- EXCLUSIVE_LOCKS_REQUIRED(m_impl->cs)
53
- {
54
- CNetAddr addr;
55
- if (fuzzed_data_provider.remaining_bytes () > 1 && fuzzed_data_provider.ConsumeBool ()) {
56
- addr = ConsumeNetAddr (fuzzed_data_provider);
57
- } else {
58
- // The networks [1..6] correspond to CNetAddr::BIP155Network (private).
59
- static const std::map<uint8_t , uint8_t > net_len_map = {{1 , ADDR_IPV4_SIZE},
60
- {2 , ADDR_IPV6_SIZE},
61
- {4 , ADDR_TORV3_SIZE},
62
- {5 , ADDR_I2P_SIZE},
63
- {6 , ADDR_CJDNS_SIZE}};
64
- uint8_t net = fast_random_context.randrange (5 ) + 1 ; // [1..5]
65
- if (net == 3 ) {
66
- net = 6 ;
67
- }
59
+ CDataStream s (SER_NETWORK, PROTOCOL_VERSION | ADDRV2_FORMAT);
68
60
69
- CDataStream s (SER_NETWORK, PROTOCOL_VERSION | ADDRV2_FORMAT);
61
+ s << net;
62
+ s << fast_random_context.randbytes (net_len_map.at (net));
70
63
71
- s << net ;
72
- s << fast_random_context. randbytes (net_len_map. at (net));
64
+ s >> addr ;
65
+ }
73
66
74
- s >> addr;
75
- }
67
+ // Return a dummy IPv4 5.5.5.5 if we generated an invalid address.
68
+ if (!addr.IsValid ()) {
69
+ in_addr v4_addr = {};
70
+ v4_addr.s_addr = 0x05050505 ;
71
+ addr = CNetAddr{v4_addr};
72
+ }
76
73
77
- // Return a dummy IPv4 5.5.5.5 if we generated an invalid address.
78
- if (!addr.IsValid ()) {
79
- in_addr v4_addr = {};
80
- v4_addr.s_addr = 0x05050505 ;
81
- addr = CNetAddr{v4_addr};
82
- }
74
+ return addr;
75
+ }
83
76
84
- return addr;
77
+ class AddrManDeterministic : public AddrMan
78
+ {
79
+ public:
80
+ explicit AddrManDeterministic (std::vector<bool > asmap, FuzzedDataProvider& fuzzed_data_provider)
81
+ : AddrMan(std::move(asmap), /* deterministic */ true, /* consistency_check_ratio */ 0)
82
+ {
83
+ WITH_LOCK (m_impl->cs , m_impl->insecure_rand = FastRandomContext{ConsumeUInt256 (fuzzed_data_provider)});
85
84
}
86
85
87
86
/* *
0 commit comments