diff --git a/src/test/fuzz/bloom_filter.cpp b/src/test/fuzz/bloom_filter.cpp index 2cad942baf..5d0a42668c 100644 --- a/src/test/fuzz/bloom_filter.cpp +++ b/src/test/fuzz/bloom_filter.cpp @@ -11,9 +11,8 @@ #include #include -#include +#include #include -#include #include FUZZ_TARGET(bloom_filter) @@ -25,13 +24,15 @@ FUZZ_TARGET(bloom_filter) } else { SelectParams(ChainType::MAIN); } + bool good_data{true}; CBloomFilter bloom_filter{ fuzzed_data_provider.ConsumeIntegralInRange(1, 10000000), 1.0 / fuzzed_data_provider.ConsumeIntegralInRange(1, std::numeric_limits::max()), fuzzed_data_provider.ConsumeIntegral(), static_cast(fuzzed_data_provider.PickValueInArray({BLOOM_UPDATE_NONE, BLOOM_UPDATE_ALL, BLOOM_UPDATE_P2PUBKEY_ONLY, BLOOM_UPDATE_MASK}))}; - LIMITED_WHILE(fuzzed_data_provider.remaining_bytes() > 0, 10000) { + LIMITED_WHILE(good_data && fuzzed_data_provider.remaining_bytes() > 0, 10'000) + { CallOneOf( fuzzed_data_provider, [&] { @@ -44,6 +45,7 @@ FUZZ_TARGET(bloom_filter) [&] { const std::optional out_point = ConsumeDeserializable(fuzzed_data_provider); if (!out_point) { + good_data = false; return; } (void)bloom_filter.contains(*out_point); @@ -54,6 +56,7 @@ FUZZ_TARGET(bloom_filter) [&] { const std::optional u256 = ConsumeDeserializable(fuzzed_data_provider); if (!u256) { + good_data = false; return; } (void)bloom_filter.contains(*u256); @@ -64,6 +67,7 @@ FUZZ_TARGET(bloom_filter) [&] { const std::optional mut_tx = ConsumeDeserializable(fuzzed_data_provider); if (!mut_tx) { + good_data = false; return; } const CTransaction tx{*mut_tx}; diff --git a/src/test/fuzz/coins_view.cpp b/src/test/fuzz/coins_view.cpp index 0fd2cda92c..fd4edd8fc4 100644 --- a/src/test/fuzz/coins_view.cpp +++ b/src/test/fuzz/coins_view.cpp @@ -2,26 +2,28 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include #include #include #include #include #include -#include #include #include -#include +#include