Skip to content

Commit ae4165f

Browse files
committed
Merge bitcoin/bitcoin#29495: fuzz: add target for local address stuff
25eab52 fuzz: add target for local addresses (brunoerg) Pull request description: This PR adds fuzz target for local address functions - (`AddLocal`, `RemoveLocal`, `SeenLocal`, `IsLocal`) ACKs for top commit: dergoegge: ACK 25eab52 vasild: ACK 25eab52 Tree-SHA512: 24faaab86dcd8835ba0e2d81fb6322a39a9266c7edf66415dbc4421754054f47efb6e0de4efdc7ea026b0686792658e86a526f7cf27cbc6cf9ed0c4aed376f97
2 parents d72cf82 + 25eab52 commit ae4165f

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/test/fuzz/net.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,40 @@ FUZZ_TARGET(net, .init = initialize_net)
7777
(void)node.HasPermission(net_permission_flags);
7878
(void)node.ConnectedThroughNetwork();
7979
}
80+
81+
FUZZ_TARGET(local_address, .init = initialize_net)
82+
{
83+
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
84+
CService service{ConsumeService(fuzzed_data_provider)};
85+
CNode node{ConsumeNode(fuzzed_data_provider)};
86+
{
87+
LOCK(g_maplocalhost_mutex);
88+
mapLocalHost.clear();
89+
}
90+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
91+
CallOneOf(
92+
fuzzed_data_provider,
93+
[&] {
94+
service = ConsumeService(fuzzed_data_provider);
95+
},
96+
[&] {
97+
const bool added{AddLocal(service, fuzzed_data_provider.ConsumeIntegralInRange<int>(0, LOCAL_MAX - 1))};
98+
if (!added) return;
99+
assert(service.IsRoutable());
100+
assert(IsLocal(service));
101+
assert(SeenLocal(service));
102+
},
103+
[&] {
104+
(void)RemoveLocal(service);
105+
},
106+
[&] {
107+
(void)SeenLocal(service);
108+
},
109+
[&] {
110+
(void)IsLocal(service);
111+
},
112+
[&] {
113+
(void)GetLocalAddress(node);
114+
});
115+
}
116+
}

0 commit comments

Comments
 (0)