diff options
author | MarcoFalke <falke.marco@gmail.com> | 2021-06-01 11:31:31 +0200 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2021-06-01 11:32:02 +0200 |
commit | c91589dc2defdf0e193c2ebe383337c4008c47b5 (patch) | |
tree | 4f040d3b0b665b82b243f6502949ede16f3be975 /src/test/fuzz | |
parent | 5cf92c32d1acc0e1a89df781118068ae8b5f4ded (diff) | |
parent | fae0f836be57f466b5df094421c9fbf55fd8a2ed (diff) | |
download | bitcoin-c91589dc2defdf0e193c2ebe383337c4008c47b5.tar.xz |
Merge bitcoin/bitcoin#22005: fuzz: Speed up banman fuzz target
fae0f836be57f466b5df094421c9fbf55fd8a2ed fuzz: Speed up banman fuzz target (MarcoFalke)
Pull request description:
Hopefully fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=34463
ACKs for top commit:
practicalswift:
cr ACK fae0f836be57f466b5df094421c9fbf55fd8a2ed: patch looks correct and touches only `src/test/fuzz/banman.cpp`
Tree-SHA512: edbad168c607d09a5f4a29639f2d0b852605dd61403334356ad35a1eac667b6ce3922b1b316fdf37a991195fbc24e947df9e37359231663f8a364e5889e28417
Diffstat (limited to 'src/test/fuzz')
-rw-r--r-- | src/test/fuzz/banman.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/test/fuzz/banman.cpp b/src/test/fuzz/banman.cpp index 4a04eed463..759a70a857 100644 --- a/src/test/fuzz/banman.cpp +++ b/src/test/fuzz/banman.cpp @@ -32,13 +32,17 @@ void initialize_banman() FUZZ_TARGET_INIT(banman, initialize_banman) { + // The complexity is O(N^2), where N is the input size, because each call + // might call DumpBanlist (or other methods that are at least linear + // complexity of the input size). + int limit_max_ops{300}; FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; SetMockTime(ConsumeTime(fuzzed_data_provider)); const fs::path banlist_file = gArgs.GetDataDirNet() / "fuzzed_banlist.dat"; fs::remove(banlist_file); { BanMan ban_man{banlist_file, nullptr, ConsumeBanTimeOffset(fuzzed_data_provider)}; - while (fuzzed_data_provider.ConsumeBool()) { + while (--limit_max_ops >= 0 && fuzzed_data_provider.ConsumeBool()) { CallOneOf( fuzzed_data_provider, [&] { @@ -52,7 +56,6 @@ FUZZ_TARGET_INIT(banman, initialize_banman) [&] { ban_man.ClearBanned(); }, - [] {}, [&] { ban_man.IsBanned(ConsumeNetAddr(fuzzed_data_provider)); }, @@ -72,7 +75,6 @@ FUZZ_TARGET_INIT(banman, initialize_banman) [&] { ban_man.DumpBanlist(); }, - [] {}, [&] { ban_man.Discourage(ConsumeNetAddr(fuzzed_data_provider)); }); |