Skip to content

Commit 25eab52

Browse files
committed
fuzz: add target for local addresses
1 parent 4d7d7fd commit 25eab52

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)