mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
fuzz: add CConnman::InitBinds() to the tests
This commit is contained in:
parent
bb2704fdcb
commit
51806d89bc
3 changed files with 36 additions and 0 deletions
|
@ -186,6 +186,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());
|
||||
|
|
|
@ -225,6 +225,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>
|
||||
|
|
|
@ -76,6 +76,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,
|
||||
|
|
Loading…
Add table
Reference in a new issue