Skip to content

Commit 0606f4a

Browse files
Fix fuzzer
1 parent 8705107 commit 0606f4a

File tree

2 files changed

+45
-4
lines changed

2 files changed

+45
-4
lines changed

tests/fuzzer/fuzz/fuzz_targets/system_functions/ecrecover.rs

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,31 @@ use arbitrary::Unstructured;
55
use basic_system::system_functions::ecrecover::EcRecoverImpl;
66
use libfuzzer_sys::fuzz_target;
77
use zk_ee::reference_implementations::BaseResources;
8-
use zk_ee::system::SystemFunction;
9-
use zk_ee::system::Resource;
108
use zk_ee::reference_implementations::DecreasingNative;
9+
use zk_ee::system::logger::NullLogger;
10+
use zk_ee::system::Resource;
11+
use zk_ee::system::SystemFunctionExt;
1112

1213
const ECRECOVER_SRC_REQUIRED_LENGTH: usize = 128;
1314

15+
struct DummyOracle;
16+
17+
impl zk_ee::oracle::IOOracle for DummyOracle {
18+
type RawIterator<'a> = Box<dyn ExactSizeIterator<Item = usize> + 'static>;
19+
20+
fn raw_query<
21+
'a,
22+
I: zk_ee::oracle::usize_serialization::UsizeSerializable
23+
+ zk_ee::oracle::usize_serialization::UsizeDeserializable,
24+
>(
25+
&'a mut self,
26+
_query_type: u32,
27+
_input: &I,
28+
) -> Result<Self::RawIterator<'a>, zk_ee::system::errors::internal::InternalError> {
29+
unreachable!("oracle should not be consulted on native targets");
30+
}
31+
}
32+
1433
fn fuzz(data: &[u8]) {
1534
let u = &mut Unstructured::new(data);
1635
let src = u
@@ -32,7 +51,14 @@ fn fuzz(data: &[u8]) {
3251

3352
let mut dst = dst.clone();
3453

35-
let _ = EcRecoverImpl::execute(&src.as_slice()[0..n], &mut dst, &mut resource, allocator);
54+
let _ = EcRecoverImpl::execute(
55+
&src.as_slice()[0..n],
56+
&mut dst,
57+
&mut resource,
58+
&mut DummyOracle,
59+
&mut NullLogger,
60+
allocator,
61+
);
3662
}
3763

3864
fuzz_target!(|data: &[u8]| {

tests/fuzzer/fuzz/wrappers/fuzz_precompiles_forward/src/precompiles.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,21 @@ use zk_ee::reference_implementations::DecreasingNative;
1414
use zk_ee::system::errors::subsystem::SubsystemError;
1515
use zk_ee::system::base_system_functions::{Bn254AddErrors,Sha256Errors,RipeMd160Errors,Keccak256Errors,
1616
Bn254MulErrors,P256VerifyErrors,Secp256k1ECRecoverErrors,Bn254PairingCheckErrors,PointEvaluationErrors};
17+
use zk_ee::system::logger::NullLogger;
18+
19+
struct DummyOracle;
20+
21+
impl zk_ee::oracle::IOOracle for DummyOracle {
22+
type RawIterator<'a> = Box<dyn ExactSizeIterator<Item = usize> + 'static>;
23+
24+
fn raw_query<'a, I: zk_ee::oracle::usize_serialization::UsizeSerializable + zk_ee::oracle::usize_serialization::UsizeDeserializable>(
25+
&'a mut self,
26+
_query_type: u32,
27+
_input: &I,
28+
) -> Result<Self::RawIterator<'a>, zk_ee::system::errors::internal::InternalError> {
29+
unreachable!("oracle should not be consulted on native targets");
30+
}
31+
}
1732

1833
pub fn ecadd(src: &[u8], dst: &mut Vec<u8>) -> Result<(), SubsystemError<Bn254AddErrors>> {
1934
let allocator = std::alloc::Global;
@@ -54,7 +69,7 @@ pub fn p256_verify(src: &[u8], dst: &mut Vec<u8>) -> Result<(), SubsystemError<P
5469
pub fn ecrecover(src: &[u8], dst: &mut Vec<u8>) -> Result<(), SubsystemError<Secp256k1ECRecoverErrors>> {
5570
let allocator = std::alloc::Global;
5671
let mut resource = <BaseResources<DecreasingNative> as Resource>::FORMAL_INFINITE;
57-
EcRecoverImpl::execute(&src, dst, &mut resource, allocator)
72+
EcRecoverImpl::execute(&src, dst, &mut resource, &mut DummyOracle, &mut NullLogger, allocator)
5873
}
5974

6075
pub fn pairing(src: &[u8], dst: &mut Vec<u8>) -> Result<(), SubsystemError<Bn254PairingCheckErrors>> {

0 commit comments

Comments
 (0)