Skip to content

Commit c42ded3

Browse files
committed
fuzz: ConsumeNetAddr(): avoid IPv6 addresses that look like CJDNS
The fuzz testing framework runs as if `-cjdnsreachable` is set and in this case addresses like `{net=IPv6, addr=fc...}` are not possible.
1 parent 64d6f77 commit c42ded3

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/test/fuzz/util/net.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,11 @@ CNetAddr ConsumeNetAddr(FuzzedDataProvider& fuzzed_data_provider) noexcept
3636
} else if (network == Network::NET_IPV6) {
3737
if (fuzzed_data_provider.remaining_bytes() >= 16) {
3838
in6_addr v6_addr = {};
39-
memcpy(v6_addr.s6_addr, fuzzed_data_provider.ConsumeBytes<uint8_t>(16).data(), 16);
39+
auto addr_bytes = fuzzed_data_provider.ConsumeBytes<uint8_t>(16);
40+
if (addr_bytes[0] == CJDNS_PREFIX) { // Avoid generating IPv6 addresses that look like CJDNS.
41+
addr_bytes[0] = 0x55; // Just an arbitrary number, anything != CJDNS_PREFIX would do.
42+
}
43+
memcpy(v6_addr.s6_addr, addr_bytes.data(), 16);
4044
net_addr = CNetAddr{v6_addr, fuzzed_data_provider.ConsumeIntegral<uint32_t>()};
4145
}
4246
} else if (network == Network::NET_INTERNAL) {

0 commit comments

Comments
 (0)