Skip to content

Commit 36d184d

Browse files
author
MarcoFalke
committed
Merge bitcoin/bitcoin#22508: fuzz: replace every fuzzer-controlled while loop with a macro
214d905 fuzz: replace every fuzzer-controlled loop with a LIMITED_WHILE loop (Andrew Poelstra) Pull request description: Limits the number of iterations to 1000 rather than letting the fuzzer do millions or billions of iterations on a single core. ACKs for top commit: MarcoFalke: cr ACK 214d905 Tree-SHA512: 9741c32ccd126ea656e5c93371b7136eaa2f92dc9a490dd4d39642503b1a41174f3368245153e508c3b608fe37ab89800b67ada97b740e3b5a3728bb506429d3
2 parents c82284c + 214d905 commit 36d184d

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)