Skip to content

Commit 2e95cee

Browse files
fanquakeknst
authored andcommitted
Merge 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
1 parent d715a2e commit 2e95cee

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
@@ -94,3 +94,40 @@ FUZZ_TARGET(net, .init = initialize_net)
9494
(void)node.HasPermission(net_permission_flags);
9595
(void)node.ConnectedThroughNetwork();
9696
}
97+
98+
FUZZ_TARGET(local_address, .init = initialize_net)
99+
{
100+
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
101+
CService service{ConsumeService(fuzzed_data_provider)};
102+
CNode node{ConsumeNode(fuzzed_data_provider)};
103+
{
104+
LOCK(g_maplocalhost_mutex);
105+
mapLocalHost.clear();
106+
}
107+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
108+
CallOneOf(
109+
fuzzed_data_provider,
110+
[&] {
111+
service = ConsumeService(fuzzed_data_provider);
112+
},
113+
[&] {
114+
const bool added{AddLocal(service, fuzzed_data_provider.ConsumeIntegralInRange<int>(0, LOCAL_MAX - 1))};
115+
if (!added) return;
116+
assert(service.IsRoutable());
117+
assert(IsLocal(service));
118+
assert(SeenLocal(service));
119+
},
120+
[&] {
121+
(void)RemoveLocal(service);
122+
},
123+
[&] {
124+
(void)SeenLocal(service);
125+
},
126+
[&] {
127+
(void)IsLocal(service);
128+
},
129+
[&] {
130+
(void)GetLocalAddress(node);
131+
});
132+
}
133+
}

0 commit comments

Comments
 (0)