Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions tests/fuzz/fuzz_rpc/fuzz_rpc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,26 +32,26 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
FuzzedDataProvider provider(data, size);

// Randomly choose multiple fuzz_targets to fuzz
int rpc_messages_to_send = provider.ConsumeIntegralInRange<int>(1, 16);
std::vector<int> selectors;
unsigned rpc_messages_to_send = provider.ConsumeIntegralInRange<unsigned>(1, 16);
std::vector<unsigned> selectors;
if (is_safe_mode) {
selectors.reserve(rpc_messages_to_send);
} else {
selectors.reserve(rpc_messages_to_send + priority_fuzz_targets.size());
for (int i = 0; i < priority_fuzz_targets.size(); ++i) {
for (unsigned i = 0; i < priority_fuzz_targets.size(); ++i) {
selectors.push_back(i);
}

// Randomly shuffle the selectors for priority fuzz targets
for (int i = 0; i < priority_fuzz_targets.size(); i++) {
int target = provider.ConsumeIntegralInRange<int>(0, priority_fuzz_targets.size() - 1);
for (unsigned i = 0; i < priority_fuzz_targets.size(); i++) {
unsigned target = provider.ConsumeIntegralInRange<unsigned>(0, priority_fuzz_targets.size() - 1);
std::swap(selectors[i], selectors[target]);
}
}

// Randomly select rpc functions to call
for (int i = 0; i < rpc_messages_to_send && provider.remaining_bytes() >= 2; ++i) {
int selector = provider.ConsumeIntegralInRange<int>(0, fuzz_targets.size() - 1);
for (unsigned i = 0; i < rpc_messages_to_send && provider.remaining_bytes() >= 2; ++i) {
unsigned selector = provider.ConsumeIntegralInRange<unsigned>(0, fuzz_targets.size() - 1);
selectors.push_back(selector);
}

Expand All @@ -70,7 +70,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
// Disable bootstrap daemon
disable_bootstrap_daemon(*rpc_handler->rpc);

for (int selector : selectors) {
for (unsigned selector : selectors) {
try {
// Fuzz the target function
fuzz_targets[selector](*rpc_handler->rpc, provider);
Expand Down
3 changes: 0 additions & 3 deletions tests/fuzz/fuzz_rpc/initialisation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -338,13 +338,10 @@ bool generate_random_blocks(cryptonote::core& core, FuzzedDataProvider& provider
}
}

bool added_txs = false;
for (const auto& tx_blob : cached_txs) {
cryptonote::tx_verification_context tvc;
bool accepted = core.handle_incoming_tx(tx_blob, tvc, cryptonote::relay_method::block, true);
if (accepted || tvc.m_added_to_pool) {
added_txs = true;

// Store legit hashes
cryptonote::transaction tx;
if (cryptonote::parse_and_validate_tx_from_blob(tx_blob, tx)) {
Expand Down