Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
fuzzer_data.cpp
Go to the documentation of this file.
2
3#include <random>
4
11
13{
14 auto num_of_mutation = std::uniform_int_distribution<uint8_t>(0, MAX_MUTATION_NUM)(rng);
15 auto mutation_config = BASIC_FUZZER_DATA_MUTATION_CONFIGURATION.select(rng);
16 for (uint8_t i = 0; i < num_of_mutation; i++) {
17 switch (mutation_config) {
19 mutate_vec<std::vector<FuzzInstruction>>(fuzzer_data.instruction_blocks,
20 rng,
24 break;
27 break;
30 break;
32 mutate_calldata_vec(fuzzer_data.calldata, rng);
33 if (fuzzer_data.calldata.size() > 0) {
34 // For ts simulator, Selector must fit in 4 bytes (1st calldata element is perceived as the selector)
35 // just setting it to 0
36 fuzzer_data.calldata[0] = bb::avm2::FF(0);
37 }
38 break;
39 }
40 }
41}
void mutate_calldata_vec(std::vector< bb::avm2::FF > &calldata, std::mt19937_64 &rng)
T select(std::mt19937_64 &rng) const
constexpr ReturnOptionsMutationConfig BASIC_RETURN_OPTIONS_MUTATION_CONFIGURATION
constexpr uint8_t MAX_MUTATION_NUM
constexpr FuzzerDataMutationConfig BASIC_FUZZER_DATA_MUTATION_CONFIGURATION
constexpr VecMutationConfig BASIC_VEC_MUTATION_CONFIGURATION
void mutate_control_flow_vec(std::vector< CFGInstruction > &control_flow_vec, std::mt19937_64 &rng)
void mutate_fuzzer_data(FuzzerData &fuzzer_data, std::mt19937_64 &rng)
std::vector< FuzzInstruction > generate_instruction_block(std::mt19937_64 &rng)
void mutate_instruction_block(std::vector< FuzzInstruction > &instruction_block, std::mt19937_64 &rng)
AvmFlavorSettings::FF FF
Definition field.hpp:10
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
void mutate_return_options(ReturnOptions &return_options, std::mt19937_64 &rng, const ReturnOptionsMutationConfig &config)
describes the data which will be used for fuzzing Should contain instructions, calldata,...
ReturnOptions return_options
std::vector< bb::avm2::FF > calldata
std::vector< CFGInstruction > cfg_instructions
std::vector< std::vector< FuzzInstruction > > instruction_blocks