Skip to content

Commit

Permalink
fuzz: add CConnman::InitBinds() to the tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vasild committed Feb 4, 2024
1 parent 5beecc5 commit 714bc21
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/test/fuzz/connman.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,25 @@ FUZZ_TARGET(connman, .init = initialize_connman)
/*permissions=*/ConsumeWeakEnum(fuzzed_data_provider, ALL_NET_PERMISSION_FLAGS),
/*addr_bind=*/ConsumeAddress(fuzzed_data_provider),
/*addr_peer=*/peer);
},
[&] {
CConnman::Options options;

options.vBinds = ConsumeServiceVector(fuzzed_data_provider, 5);

options.vWhiteBinds = std::vector<NetWhitebindPermissions>{
fuzzed_data_provider.ConsumeIntegralInRange<size_t>(0, 5)};
for (auto& wb : options.vWhiteBinds) {
wb.m_flags = ConsumeWeakEnum(fuzzed_data_provider, ALL_NET_PERMISSION_FLAGS);
wb.m_service = ConsumeService(fuzzed_data_provider);
}

options.onion_binds = ConsumeServiceVector(fuzzed_data_provider, 5);

options.bind_on_any = options.vBinds.empty() && options.vWhiteBinds.empty() &&
options.onion_binds.empty();

connman.InitBindsPublic(options);
});
}
(void)connman.GetAddedNodeInfo(fuzzed_data_provider.ConsumeBool());
Expand Down
12 changes: 12 additions & 0 deletions src/test/fuzz/util/net.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,18 @@ inline CService ConsumeService(FuzzedDataProvider& fuzzed_data_provider) noexcep
return {ConsumeNetAddr(fuzzed_data_provider), fuzzed_data_provider.ConsumeIntegral<uint16_t>()};
}

inline std::vector<CService> ConsumeServiceVector(FuzzedDataProvider& fuzzed_data_provider,
size_t max_vector_size) noexcept
{
std::vector<CService> ret;
const size_t size = fuzzed_data_provider.ConsumeIntegralInRange<size_t>(0, max_vector_size);
ret.reserve(size);
for (size_t i = 0; i < size; ++i) {
ret.emplace_back(ConsumeService(fuzzed_data_provider));
}
return ret;
}

CAddress ConsumeAddress(FuzzedDataProvider& fuzzed_data_provider) noexcept;

template <bool ReturnUniquePtr = false>
Expand Down
5 changes: 5 additions & 0 deletions src/test/util/net.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ struct ConnmanTestMsg : public CConnman {
CreateNodeFromAcceptedSocket(std::move(sock), permissions, addr_bind, addr_peer);
}

bool InitBindsPublic(const CConnman::Options& options)
{
return InitBinds(options);
}

void Handshake(CNode& node,
bool successfully_connected,
ServiceFlags remote_services,
Expand Down

0 comments on commit 714bc21

Please sign in to comment.