From d3468b2bd35d7ef0652f3b9a89ec326eecd4e78d Mon Sep 17 00:00:00 2001 From: Lucas Date: Thu, 5 Sep 2024 16:01:52 -0300 Subject: [PATCH] Fix fuzzer --- fuzz/fuzz_targets/dumb.rs | 6 ++++-- fuzz/fuzz_targets/smart.rs | 5 ++++- fuzz/fuzz_targets/smart_jit_diff.rs | 5 ++++- fuzz/fuzz_targets/smarter_jit_diff.rs | 5 ++++- fuzz/fuzz_targets/verify_semantic_aware.rs | 6 +++++- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/fuzz/fuzz_targets/dumb.rs b/fuzz/fuzz_targets/dumb.rs index e8b17c2b..c1b1743d 100644 --- a/fuzz/fuzz_targets/dumb.rs +++ b/fuzz/fuzz_targets/dumb.rs @@ -8,7 +8,7 @@ use solana_rbpf::{ ebpf, elf::Executable, memory_region::MemoryRegion, - program::{BuiltinProgram, FunctionRegistry, SBPFVersion}, + program::{BuiltinFunction, BuiltinProgram, FunctionRegistry, SBPFVersion}, verifier::{RequisiteVerifier, Verifier}, vm::TestContextObject, }; @@ -29,7 +29,9 @@ fuzz_target!(|data: DumbFuzzData| { let prog = data.prog; let config = data.template.into(); let function_registry = FunctionRegistry::default(); - if RequisiteVerifier::verify(&prog, &config, &SBPFVersion::V2, &function_registry).is_err() { + let syscall_registry = FunctionRegistry::>::default(); + + if RequisiteVerifier::verify(&prog, &config, &SBPFVersion::V2, &function_registry, &syscall_registry).is_err() { // verify please return; } diff --git a/fuzz/fuzz_targets/smart.rs b/fuzz/fuzz_targets/smart.rs index 8ccb873e..0ecb535b 100644 --- a/fuzz/fuzz_targets/smart.rs +++ b/fuzz/fuzz_targets/smart.rs @@ -10,7 +10,7 @@ use solana_rbpf::{ elf::Executable, insn_builder::{Arch, IntoBytes}, memory_region::MemoryRegion, - program::{BuiltinProgram, FunctionRegistry, SBPFVersion}, + program::{BuiltinFunction, BuiltinProgram, FunctionRegistry, SBPFVersion}, verifier::{RequisiteVerifier, Verifier}, vm::TestContextObject, }; @@ -33,11 +33,14 @@ fuzz_target!(|data: FuzzData| { let prog = make_program(&data.prog, data.arch); let config = data.template.into(); let function_registry = FunctionRegistry::default(); + let syscall_registry = FunctionRegistry::>::default(); + if RequisiteVerifier::verify( prog.into_bytes(), &config, &SBPFVersion::V2, &function_registry, + &syscall_registry, ) .is_err() { diff --git a/fuzz/fuzz_targets/smart_jit_diff.rs b/fuzz/fuzz_targets/smart_jit_diff.rs index d085a0d0..87203ca2 100644 --- a/fuzz/fuzz_targets/smart_jit_diff.rs +++ b/fuzz/fuzz_targets/smart_jit_diff.rs @@ -8,7 +8,7 @@ use solana_rbpf::{ elf::Executable, insn_builder::{Arch, Instruction, IntoBytes}, memory_region::MemoryRegion, - program::{BuiltinProgram, FunctionRegistry, SBPFVersion}, + program::{BuiltinFunction, BuiltinProgram, FunctionRegistry, SBPFVersion}, verifier::{RequisiteVerifier, Verifier}, vm::TestContextObject, }; @@ -40,11 +40,14 @@ fuzz_target!(|data: FuzzData| { .push(); let config = data.template.into(); let function_registry = FunctionRegistry::default(); + let syscall_registry = FunctionRegistry::>::default(); + if RequisiteVerifier::verify( prog.into_bytes(), &config, &SBPFVersion::V2, &function_registry, + &syscall_registry, ) .is_err() { diff --git a/fuzz/fuzz_targets/smarter_jit_diff.rs b/fuzz/fuzz_targets/smarter_jit_diff.rs index 476ba689..6d77df41 100644 --- a/fuzz/fuzz_targets/smarter_jit_diff.rs +++ b/fuzz/fuzz_targets/smarter_jit_diff.rs @@ -8,7 +8,7 @@ use solana_rbpf::{ elf::Executable, insn_builder::IntoBytes, memory_region::MemoryRegion, - program::{BuiltinProgram, FunctionRegistry, SBPFVersion}, + program::{BuiltinFunction, BuiltinProgram, FunctionRegistry, SBPFVersion}, verifier::{RequisiteVerifier, Verifier}, vm::TestContextObject, }; @@ -30,11 +30,14 @@ fuzz_target!(|data: FuzzData| { let prog = make_program(&data.prog); let config = data.template.into(); let function_registry = FunctionRegistry::default(); + let syscall_registry = FunctionRegistry::>::default(); + if RequisiteVerifier::verify( prog.into_bytes(), &config, &SBPFVersion::V2, &function_registry, + &syscall_registry, ) .is_err() { diff --git a/fuzz/fuzz_targets/verify_semantic_aware.rs b/fuzz/fuzz_targets/verify_semantic_aware.rs index c1e4e171..0c2cc09f 100644 --- a/fuzz/fuzz_targets/verify_semantic_aware.rs +++ b/fuzz/fuzz_targets/verify_semantic_aware.rs @@ -5,8 +5,9 @@ use libfuzzer_sys::fuzz_target; use semantic_aware::*; use solana_rbpf::{ insn_builder::IntoBytes, - program::{FunctionRegistry, SBPFVersion}, + program::{BuiltinFunction, FunctionRegistry, SBPFVersion}, verifier::{RequisiteVerifier, Verifier}, + vm::TestContextObject, }; use crate::common::ConfigTemplate; @@ -24,11 +25,14 @@ fuzz_target!(|data: FuzzData| { let prog = make_program(&data.prog); let config = data.template.into(); let function_registry = FunctionRegistry::default(); + let syscall_registry = FunctionRegistry::>::default(); + RequisiteVerifier::verify( prog.into_bytes(), &config, &SBPFVersion::V2, &function_registry, + &syscall_registry, ) .unwrap(); });