aboutsummaryrefslogtreecommitdiff
path: root/src/test/fuzz/bloom_filter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/fuzz/bloom_filter.cpp')
-rw-r--r--src/test/fuzz/bloom_filter.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/test/fuzz/bloom_filter.cpp b/src/test/fuzz/bloom_filter.cpp
index 3e303ecc0f..5dbb463a16 100644
--- a/src/test/fuzz/bloom_filter.cpp
+++ b/src/test/fuzz/bloom_filter.cpp
@@ -10,21 +10,22 @@
#include <uint256.h>
#include <cassert>
-#include <cstdint>
+#include <limits>
#include <optional>
-#include <string>
#include <vector>
FUZZ_TARGET(bloom_filter)
{
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
+ bool good_data{true};
CBloomFilter bloom_filter{
fuzzed_data_provider.ConsumeIntegralInRange<unsigned int>(1, 10000000),
1.0 / fuzzed_data_provider.ConsumeIntegralInRange<unsigned int>(1, std::numeric_limits<unsigned int>::max()),
fuzzed_data_provider.ConsumeIntegral<unsigned int>(),
static_cast<unsigned char>(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,
[&] {
@@ -37,6 +38,7 @@ FUZZ_TARGET(bloom_filter)
[&] {
const std::optional<COutPoint> out_point = ConsumeDeserializable<COutPoint>(fuzzed_data_provider);
if (!out_point) {
+ good_data = false;
return;
}
(void)bloom_filter.contains(*out_point);
@@ -47,6 +49,7 @@ FUZZ_TARGET(bloom_filter)
[&] {
const std::optional<uint256> u256 = ConsumeDeserializable<uint256>(fuzzed_data_provider);
if (!u256) {
+ good_data = false;
return;
}
(void)bloom_filter.contains(*u256);
@@ -55,8 +58,9 @@ FUZZ_TARGET(bloom_filter)
assert(present);
},
[&] {
- const std::optional<CMutableTransaction> mut_tx = ConsumeDeserializable<CMutableTransaction>(fuzzed_data_provider);
+ const std::optional<CMutableTransaction> mut_tx = ConsumeDeserializable<CMutableTransaction>(fuzzed_data_provider, TX_WITH_WITNESS);
if (!mut_tx) {
+ good_data = false;
return;
}
const CTransaction tx{*mut_tx};