Skip to content

Commit fa9949b

Browse files
author
MarcoFalke
committed
fuzz: Add ConsumeWeakEnum helper, Extract ALL_NET_PERMISSION_FLAGS
1 parent faaef94 commit fa9949b

File tree

4 files changed

+24
-15
lines changed

4 files changed

+24
-15
lines changed

src/test/fuzz/net.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <test/fuzz/FuzzedDataProvider.h>
1414
#include <test/fuzz/fuzz.h>
1515
#include <test/fuzz/util.h>
16+
#include <test/util/net.h>
1617
#include <test/util/setup_common.h>
1718

1819
#include <cstdint>
@@ -122,9 +123,7 @@ FUZZ_TARGET_INIT(net, initialize_net)
122123
(void)node.GetCommonVersion();
123124
(void)node.RelayAddrsWithConn();
124125

125-
const NetPermissionFlags net_permission_flags = fuzzed_data_provider.ConsumeBool() ?
126-
fuzzed_data_provider.PickValueInArray<NetPermissionFlags>({NetPermissionFlags::PF_NONE, NetPermissionFlags::PF_BLOOMFILTER, NetPermissionFlags::PF_RELAY, NetPermissionFlags::PF_FORCERELAY, NetPermissionFlags::PF_NOBAN, NetPermissionFlags::PF_MEMPOOL, NetPermissionFlags::PF_ISIMPLICIT, NetPermissionFlags::PF_ALL}) :
127-
static_cast<NetPermissionFlags>(fuzzed_data_provider.ConsumeIntegral<uint32_t>());
126+
const NetPermissionFlags net_permission_flags = ConsumeWeakEnum(fuzzed_data_provider, ALL_NET_PERMISSION_FLAGS);
128127
(void)node.HasPermission(net_permission_flags);
129128
(void)node.ConnectedThroughNetwork();
130129
}

src/test/fuzz/net_permissions.cpp

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,7 @@ FUZZ_TARGET(net_permissions)
1717
{
1818
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
1919
const std::string s = fuzzed_data_provider.ConsumeRandomLengthString(32);
20-
const NetPermissionFlags net_permission_flags = fuzzed_data_provider.ConsumeBool() ? fuzzed_data_provider.PickValueInArray<NetPermissionFlags>({
21-
NetPermissionFlags::PF_NONE,
22-
NetPermissionFlags::PF_BLOOMFILTER,
23-
NetPermissionFlags::PF_RELAY,
24-
NetPermissionFlags::PF_FORCERELAY,
25-
NetPermissionFlags::PF_NOBAN,
26-
NetPermissionFlags::PF_MEMPOOL,
27-
NetPermissionFlags::PF_ADDR,
28-
NetPermissionFlags::PF_ISIMPLICIT,
29-
NetPermissionFlags::PF_ALL,
30-
}) :
31-
static_cast<NetPermissionFlags>(fuzzed_data_provider.ConsumeIntegral<uint32_t>());
20+
const NetPermissionFlags net_permission_flags = ConsumeWeakEnum(fuzzed_data_provider, ALL_NET_PERMISSION_FLAGS);
3221

3322
NetWhitebindPermissions net_whitebind_permissions;
3423
bilingual_str error_net_whitebind_permissions;

src/test/fuzz/util.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,14 @@ template <typename T>
8787
return obj;
8888
}
8989

90+
template <typename WeakEnumType, size_t size>
91+
[[nodiscard]] WeakEnumType ConsumeWeakEnum(FuzzedDataProvider& fuzzed_data_provider, const WeakEnumType (&all_types)[size]) noexcept
92+
{
93+
return fuzzed_data_provider.ConsumeBool() ?
94+
fuzzed_data_provider.PickValueInArray<WeakEnumType>(all_types) :
95+
WeakEnumType(fuzzed_data_provider.ConsumeIntegral<typename std::underlying_type<WeakEnumType>::type>());
96+
}
97+
9098
[[nodiscard]] inline opcodetype ConsumeOpcodeType(FuzzedDataProvider& fuzzed_data_provider) noexcept
9199
{
92100
return static_cast<opcodetype>(fuzzed_data_provider.ConsumeIntegralInRange<uint32_t>(0, MAX_OPCODE));

src/test/util/net.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@ struct ConnmanTestMsg : public CConnman {
3030
bool ReceiveMsgFrom(CNode& node, CSerializedNetMsg& ser_msg) const;
3131
};
3232

33+
constexpr NetPermissionFlags ALL_NET_PERMISSION_FLAGS[]{
34+
NetPermissionFlags::PF_NONE,
35+
NetPermissionFlags::PF_BLOOMFILTER,
36+
NetPermissionFlags::PF_RELAY,
37+
NetPermissionFlags::PF_FORCERELAY,
38+
NetPermissionFlags::PF_NOBAN,
39+
NetPermissionFlags::PF_MEMPOOL,
40+
NetPermissionFlags::PF_ADDR,
41+
NetPermissionFlags::PF_DOWNLOAD,
42+
NetPermissionFlags::PF_ISIMPLICIT,
43+
NetPermissionFlags::PF_ALL,
44+
};
45+
3346
constexpr ConnectionType ALL_CONNECTION_TYPES[]{
3447
ConnectionType::INBOUND,
3548
ConnectionType::OUTBOUND_FULL_RELAY,

0 commit comments

Comments
 (0)