MCPcopy Create free account
hub / github.com/ElementsProject/elements / FUZZ_TARGET_INIT

Function FUZZ_TARGET_INIT

src/test/fuzz/banman.cpp:42–115  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40}
41
42FUZZ_TARGET_INIT(banman, initialize_banman)
43{
44 FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
45 SetMockTime(ConsumeTime(fuzzed_data_provider));
46 fs::path banlist_file = gArgs.GetDataDirNet() / "fuzzed_banlist";
47
48 const bool start_with_corrupted_banlist{fuzzed_data_provider.ConsumeBool()};
49 bool force_read_and_write_to_err{false};
50 if (start_with_corrupted_banlist) {
51 assert(WriteBinaryFile(banlist_file + ".json",
52 fuzzed_data_provider.ConsumeRandomLengthString()));
53 } else {
54 force_read_and_write_to_err = fuzzed_data_provider.ConsumeBool();
55 if (force_read_and_write_to_err) {
56 banlist_file = fs::path{"path"} / "to" / "inaccessible" / "fuzzed_banlist";
57 }
58 }
59
60 {
61 BanMan ban_man{banlist_file, /*client_interface=*/nullptr, /*default_ban_time=*/ConsumeBanTimeOffset(fuzzed_data_provider)};
62 // The complexity is O(N^2), where N is the input size, because each call
63 // might call DumpBanlist (or other methods that are at least linear
64 // complexity of the input size).
65 LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 300)
66 {
67 CallOneOf(
68 fuzzed_data_provider,
69 [&] {
70 ban_man.Ban(ConsumeNetAddr(fuzzed_data_provider),
71 ConsumeBanTimeOffset(fuzzed_data_provider), fuzzed_data_provider.ConsumeBool());
72 },
73 [&] {
74 ban_man.Ban(ConsumeSubNet(fuzzed_data_provider),
75 ConsumeBanTimeOffset(fuzzed_data_provider), fuzzed_data_provider.ConsumeBool());
76 },
77 [&] {
78 ban_man.ClearBanned();
79 },
80 [&] {
81 ban_man.IsBanned(ConsumeNetAddr(fuzzed_data_provider));
82 },
83 [&] {
84 ban_man.IsBanned(ConsumeSubNet(fuzzed_data_provider));
85 },
86 [&] {
87 ban_man.Unban(ConsumeNetAddr(fuzzed_data_provider));
88 },
89 [&] {
90 ban_man.Unban(ConsumeSubNet(fuzzed_data_provider));
91 },
92 [&] {
93 banmap_t banmap;
94 ban_man.GetBanned(banmap);
95 },
96 [&] {
97 ban_man.DumpBanlist();
98 },
99 [&] {

Callers

nothing calls this directly

Calls 15

SetMockTimeFunction · 0.85
ConsumeTimeFunction · 0.85
WriteBinaryFileFunction · 0.85
ConsumeBanTimeOffsetFunction · 0.85
CallOneOfFunction · 0.85
ConsumeNetAddrFunction · 0.85
ConsumeSubNetFunction · 0.85
PathToStringFunction · 0.85
ConsumeBoolMethod · 0.80
BanMethod · 0.80
ClearBannedMethod · 0.80

Tested by

no test coverage detected