Skip to content

Commit 667636d

Browse files
committed
add limit to vector expansion
1 parent 5420487 commit 667636d

File tree

2 files changed

+33
-7
lines changed

2 files changed

+33
-7
lines changed

barretenberg/cpp/src/barretenberg/avm_fuzzer/mutations/tx_types/accumulated_data.cpp

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,12 @@ void mutate_accumulated_data(AccumulatedData& input, std::mt19937_64& rng)
102102
auto choice = ACCUMULATED_DATA_MUTATION_CONFIGURATION.select(rng);
103103
switch (choice) {
104104
case AccumulatedDataMutationOptions::NoteHashes:
105-
mutate_vec<FF>(input.note_hashes, rng, mutate_note_hash, generate_note_hash, BASIC_VEC_MUTATION_CONFIGURATION);
105+
mutate_vec_with_limit<FF>(input.note_hashes,
106+
rng,
107+
mutate_note_hash,
108+
generate_note_hash,
109+
BASIC_VEC_MUTATION_CONFIGURATION,
110+
MAX_NOTE_HASHES_PER_TX);
106111
break;
107112
case AccumulatedDataMutationOptions::NoteHashesLimit: {
108113
size_t original_size = input.note_hashes.size();
@@ -113,7 +118,12 @@ void mutate_accumulated_data(AccumulatedData& input, std::mt19937_64& rng)
113118
break;
114119
}
115120
case AccumulatedDataMutationOptions::Nullifiers:
116-
mutate_vec<FF>(input.nullifiers, rng, mutate_nullifier, generate_nullifier, BASIC_VEC_MUTATION_CONFIGURATION);
121+
mutate_vec_with_limit<FF>(input.nullifiers,
122+
rng,
123+
mutate_nullifier,
124+
generate_nullifier,
125+
BASIC_VEC_MUTATION_CONFIGURATION,
126+
MAX_NULLIFIERS_PER_TX);
117127
break;
118128
case AccumulatedDataMutationOptions::NullifiersLimit: {
119129
size_t original_size = input.nullifiers.size();
@@ -124,11 +134,12 @@ void mutate_accumulated_data(AccumulatedData& input, std::mt19937_64& rng)
124134
break;
125135
}
126136
case AccumulatedDataMutationOptions::L2ToL1Messages:
127-
mutate_vec<ScopedL2ToL1Message>(input.l2_to_l1_messages,
128-
rng,
129-
mutate_l2_to_l1_msg,
130-
generate_l2_to_l1_message,
131-
BASIC_VEC_MUTATION_CONFIGURATION);
137+
mutate_vec_with_limit<ScopedL2ToL1Message>(input.l2_to_l1_messages,
138+
rng,
139+
mutate_l2_to_l1_msg,
140+
generate_l2_to_l1_message,
141+
BASIC_VEC_MUTATION_CONFIGURATION,
142+
MAX_L2_TO_L1_MSGS_PER_TX);
132143
break;
133144
case AccumulatedDataMutationOptions::L2ToL1MessagesLimit: {
134145
size_t original_size = input.l2_to_l1_messages.size();

barretenberg/cpp/src/barretenberg/avm_fuzzer/mutations/tx_types/accumulated_data.hpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <random>
44

55
#include "barretenberg/avm_fuzzer/common/weighted_selection.hpp"
6+
#include "barretenberg/avm_fuzzer/mutations/configuration.hpp"
67
#include "barretenberg/vm2/common/avm_io.hpp"
78

89
namespace bb::avm2::fuzzer {
@@ -27,6 +28,20 @@ constexpr AccumulatedDataMutationConfig ACCUMULATED_DATA_MUTATION_CONFIGURATION
2728
{ AccumulatedDataMutationOptions::L2ToL1MessagesLimit, 1 },
2829
});
2930

31+
template <typename T>
32+
void mutate_vec_with_limit(std::vector<T>& vec,
33+
std::mt19937_64& rng,
34+
std::function<void(T&, std::mt19937_64&)> mutate_element_function,
35+
std::function<T(std::mt19937_64&)> generate_random_element_function,
36+
const VecMutationConfig& config,
37+
size_t vec_limit)
38+
{
39+
mutate_vec<T>(vec, rng, mutate_element_function, generate_random_element_function, config);
40+
if (vec.size() > vec_limit) {
41+
vec.resize(vec_limit);
42+
}
43+
}
44+
3045
AccumulatedData generate_non_revertible_accumulated_data(std::mt19937_64& rng);
3146
void mutate_non_revertible_accumulated_data(AccumulatedData& data, std::mt19937_64& rng);
3247

0 commit comments

Comments
 (0)