Skip to content

Commit 214d905

Browse files
committed
fuzz: replace every fuzzer-controlled loop with a LIMITED_WHILE loop
Blindly chose a cap of 10000 iterations for every loop, except for the two in script_ops.cpp and scriptnum_ops.cpp which appeared to (sometimes) be deserializing individual bytes; capped those to one million to ensure that sometimes we try working with massive scripts. There was also one fuzzer-controlled loop in timedata.cpp which was already capped, so I left that alone. git grep 'while (fuzz' should now run clean except for timedata.cpp
1 parent 22a9018 commit 214d905

29 files changed

+34
-34
lines changed

src/test/fuzz/addrman.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ FUZZ_TARGET_INIT(addrman, initialize_addrman)
236236
}
237237
}
238238
AddrManDeterministic& addr_man = *addr_man_ptr;
239-
while (fuzzed_data_provider.ConsumeBool()) {
239+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
240240
CallOneOf(
241241
fuzzed_data_provider,
242242
[&] {
@@ -247,7 +247,7 @@ FUZZ_TARGET_INIT(addrman, initialize_addrman)
247247
},
248248
[&] {
249249
std::vector<CAddress> addresses;
250-
while (fuzzed_data_provider.ConsumeBool()) {
250+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
251251
const std::optional<CAddress> opt_address = ConsumeDeserializable<CAddress>(fuzzed_data_provider);
252252
if (!opt_address) {
253253
break;

src/test/fuzz/autofile.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ FUZZ_TARGET(autofile)
1919
FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
2020
FuzzedAutoFileProvider fuzzed_auto_file_provider = ConsumeAutoFile(fuzzed_data_provider);
2121
CAutoFile auto_file = fuzzed_auto_file_provider.open();
22-
while (fuzzed_data_provider.ConsumeBool()) {
22+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
2323
CallOneOf(
2424
fuzzed_data_provider,
2525
[&] {

src/test/fuzz/bloom_filter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ FUZZ_TARGET(bloom_filter)
2424
1.0 / fuzzed_data_provider.ConsumeIntegralInRange<unsigned int>(1, std::numeric_limits<unsigned int>::max()),
2525
fuzzed_data_provider.ConsumeIntegral<unsigned int>(),
2626
static_cast<unsigned char>(fuzzed_data_provider.PickValueInArray({BLOOM_UPDATE_NONE, BLOOM_UPDATE_ALL, BLOOM_UPDATE_P2PUBKEY_ONLY, BLOOM_UPDATE_MASK}))};
27-
while (fuzzed_data_provider.remaining_bytes() > 0) {
27+
LIMITED_WHILE(fuzzed_data_provider.remaining_bytes() > 0, 10000) {
2828
CallOneOf(
2929
fuzzed_data_provider,
3030
[&] {

src/test/fuzz/buffered_file.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ FUZZ_TARGET(buffered_file)
2929
}
3030
if (opt_buffered_file && fuzzed_file != nullptr) {
3131
bool setpos_fail = false;
32-
while (fuzzed_data_provider.ConsumeBool()) {
32+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
3333
CallOneOf(
3434
fuzzed_data_provider,
3535
[&] {

src/test/fuzz/chain.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ FUZZ_TARGET(chain)
3535
(void)CDiskBlockIndex{*disk_block_index};
3636
(void)disk_block_index->BuildSkip();
3737

38-
while (fuzzed_data_provider.ConsumeBool()) {
38+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
3939
const BlockStatus block_status = fuzzed_data_provider.PickValueInArray({
4040
BlockStatus::BLOCK_VALID_UNKNOWN,
4141
BlockStatus::BLOCK_VALID_RESERVED,

src/test/fuzz/coins_view.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ FUZZ_TARGET_INIT(coins_view, initialize_coins_view)
5151
COutPoint random_out_point;
5252
Coin random_coin;
5353
CMutableTransaction random_mutable_transaction;
54-
while (fuzzed_data_provider.ConsumeBool()) {
54+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
5555
CallOneOf(
5656
fuzzed_data_provider,
5757
[&] {
@@ -114,7 +114,7 @@ FUZZ_TARGET_INIT(coins_view, initialize_coins_view)
114114
},
115115
[&] {
116116
CCoinsMap coins_map;
117-
while (fuzzed_data_provider.ConsumeBool()) {
117+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
118118
CCoinsCacheEntry coins_cache_entry;
119119
coins_cache_entry.flags = fuzzed_data_provider.ConsumeIntegral<unsigned char>();
120120
if (fuzzed_data_provider.ConsumeBool()) {

src/test/fuzz/connman.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ FUZZ_TARGET_INIT(connman, initialize_connman)
3131
CNode random_node = ConsumeNode(fuzzed_data_provider);
3232
CSubNet random_subnet;
3333
std::string random_string;
34-
while (fuzzed_data_provider.ConsumeBool()) {
34+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
3535
CallOneOf(
3636
fuzzed_data_provider,
3737
[&] {

src/test/fuzz/crypto_aes256.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ FUZZ_TARGET(crypto_aes256)
1919
AES256Encrypt encrypt{key.data()};
2020
AES256Decrypt decrypt{key.data()};
2121

22-
while (fuzzed_data_provider.ConsumeBool()) {
22+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
2323
const std::vector<uint8_t> plaintext = ConsumeFixedLengthByteVector(fuzzed_data_provider, AES_BLOCKSIZE);
2424
std::vector<uint8_t> ciphertext(AES_BLOCKSIZE);
2525
encrypt.Encrypt(ciphertext.data(), plaintext.data());

src/test/fuzz/crypto_aes256cbc.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ FUZZ_TARGET(crypto_aes256cbc)
2121
AES256CBCEncrypt encrypt{key.data(), iv.data(), pad};
2222
AES256CBCDecrypt decrypt{key.data(), iv.data(), pad};
2323

24-
while (fuzzed_data_provider.ConsumeBool()) {
24+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
2525
const std::vector<uint8_t> plaintext = ConsumeRandomLengthByteVector(fuzzed_data_provider);
2626
std::vector<uint8_t> ciphertext(plaintext.size() + AES_BLOCKSIZE);
2727
const int encrypt_ret = encrypt.Encrypt(plaintext.data(), plaintext.size(), ciphertext.data());

src/test/fuzz/crypto_chacha20.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ FUZZ_TARGET(crypto_chacha20)
1919
const std::vector<unsigned char> key = ConsumeFixedLengthByteVector(fuzzed_data_provider, fuzzed_data_provider.ConsumeIntegralInRange<size_t>(16, 32));
2020
chacha20 = ChaCha20{key.data(), key.size()};
2121
}
22-
while (fuzzed_data_provider.ConsumeBool()) {
22+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
2323
CallOneOf(
2424
fuzzed_data_provider,
2525
[&] {

0 commit comments

Comments
 (0)