Fuzz test ssz_encode for u8 to u64
This commit is contained in:
parent
7bda717eb8
commit
b98db3773e
@ -21,14 +21,30 @@ members = ["."]
|
||||
name = "fuzz_target_u8_decode"
|
||||
path = "fuzz_targets/fuzz_target_u8_decode.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "fuzz_target_u8_encode"
|
||||
path = "fuzz_targets/fuzz_target_u8_encode.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "fuzz_target_u16_decode"
|
||||
path = "fuzz_targets/fuzz_target_u16_decode.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "fuzz_target_u16_encode"
|
||||
path = "fuzz_targets/fuzz_target_u16_encode.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "fuzz_target_u32_decode"
|
||||
path = "fuzz_targets/fuzz_target_u32_decode.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "fuzz_target_u32_encode"
|
||||
path = "fuzz_targets/fuzz_target_u32_encode.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "fuzz_target_u64_decode"
|
||||
path = "fuzz_targets/fuzz_target_u64_decode.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "fuzz_target_u64_encode"
|
||||
path = "fuzz_targets/fuzz_target_u64_encode.rs"
|
||||
|
22
eth2/utils/ssz/fuzz/fuzz_targets/fuzz_target_u16_encode.rs
Normal file
22
eth2/utils/ssz/fuzz/fuzz_targets/fuzz_target_u16_encode.rs
Normal file
@ -0,0 +1,22 @@
|
||||
#![no_main]
|
||||
#[macro_use] extern crate libfuzzer_sys;
|
||||
extern crate ssz;
|
||||
|
||||
use ssz::SszStream;
|
||||
|
||||
// Fuzz ssz_encode (via ssz_append)
|
||||
fuzz_target!(|data: &[u8]| {
|
||||
let mut ssz = SszStream::new();
|
||||
let mut number_u16 = 0;
|
||||
if data.len() >= 2 {
|
||||
number_u16 = u16::from_be_bytes([data[0], data[1]]);
|
||||
}
|
||||
|
||||
ssz.append(&number_u16);
|
||||
let ssz = ssz.drain();
|
||||
|
||||
// TODO: change to little endian bytes
|
||||
// https://github.com/sigp/lighthouse/issues/215
|
||||
assert_eq!(ssz.len(), 2);
|
||||
assert_eq!(number_u16, u16::from_be_bytes([ssz[0], ssz[1]]));
|
||||
});
|
22
eth2/utils/ssz/fuzz/fuzz_targets/fuzz_target_u32_encode.rs
Normal file
22
eth2/utils/ssz/fuzz/fuzz_targets/fuzz_target_u32_encode.rs
Normal file
@ -0,0 +1,22 @@
|
||||
#![no_main]
|
||||
#[macro_use] extern crate libfuzzer_sys;
|
||||
extern crate ssz;
|
||||
|
||||
use ssz::SszStream;
|
||||
|
||||
// Fuzz ssz_encode (via ssz_append)
|
||||
fuzz_target!(|data: &[u8]| {
|
||||
let mut ssz = SszStream::new();
|
||||
let mut number_u32 = 0;
|
||||
if data.len() >= 4 {
|
||||
number_u32 = u32::from_be_bytes([data[0], data[1], data[2], data[3]]);
|
||||
}
|
||||
|
||||
ssz.append(&number_u32);
|
||||
let ssz = ssz.drain();
|
||||
|
||||
// TODO: change to little endian bytes
|
||||
// https://github.com/sigp/lighthouse/issues/215
|
||||
assert_eq!(ssz.len(), 4);
|
||||
assert_eq!(number_u32, u32::from_be_bytes([ssz[0], ssz[1], ssz[2], ssz[3]]));
|
||||
});
|
@ -25,7 +25,7 @@ fuzz_target!(|data: &[u8]| {
|
||||
]);
|
||||
assert_eq!(number_u64, val);
|
||||
} else {
|
||||
// Length less then 4 should return error
|
||||
// Length less then 8 should return error
|
||||
assert_eq!(result, Err(DecodeError::TooShort));
|
||||
}
|
||||
});
|
||||
|
40
eth2/utils/ssz/fuzz/fuzz_targets/fuzz_target_u64_encode.rs
Normal file
40
eth2/utils/ssz/fuzz/fuzz_targets/fuzz_target_u64_encode.rs
Normal file
@ -0,0 +1,40 @@
|
||||
#![no_main]
|
||||
#[macro_use] extern crate libfuzzer_sys;
|
||||
extern crate ssz;
|
||||
|
||||
use ssz::SszStream;
|
||||
|
||||
// Fuzz ssz_encode (via ssz_append)
|
||||
fuzz_target!(|data: &[u8]| {
|
||||
let mut ssz = SszStream::new();
|
||||
let mut number_u64 = 0;
|
||||
if data.len() >= 8 {
|
||||
number_u64 = u64::from_be_bytes([
|
||||
data[0],
|
||||
data[1],
|
||||
data[2],
|
||||
data[3],
|
||||
data[4],
|
||||
data[5],
|
||||
data[6],
|
||||
data[7],
|
||||
]);
|
||||
}
|
||||
|
||||
ssz.append(&number_u64);
|
||||
let ssz = ssz.drain();
|
||||
|
||||
// TODO: change to little endian bytes
|
||||
// https://github.com/sigp/lighthouse/issues/215
|
||||
assert_eq!(ssz.len(), 8);
|
||||
assert_eq!(number_u64, u64::from_be_bytes([
|
||||
ssz[0],
|
||||
ssz[1],
|
||||
ssz[2],
|
||||
ssz[3],
|
||||
ssz[4],
|
||||
ssz[5],
|
||||
ssz[6],
|
||||
ssz[7],
|
||||
]));
|
||||
});
|
@ -12,8 +12,8 @@ fuzz_target!(|data: &[u8]| {
|
||||
let (number_u8, index) = result.unwrap();
|
||||
// TODO: change to little endian bytes
|
||||
// https://github.com/sigp/lighthouse/issues/215
|
||||
assert_eq!(number_u8, data[0]);
|
||||
assert_eq!(index, 1);
|
||||
assert_eq!(number_u8, data[0]);
|
||||
} else {
|
||||
// Length of 0 should return error
|
||||
assert_eq!(result, Err(DecodeError::TooShort));
|
||||
|
22
eth2/utils/ssz/fuzz/fuzz_targets/fuzz_target_u8_encode.rs
Normal file
22
eth2/utils/ssz/fuzz/fuzz_targets/fuzz_target_u8_encode.rs
Normal file
@ -0,0 +1,22 @@
|
||||
#![no_main]
|
||||
#[macro_use] extern crate libfuzzer_sys;
|
||||
extern crate ssz;
|
||||
|
||||
use ssz::SszStream;
|
||||
|
||||
// Fuzz ssz_encode (via ssz_append)
|
||||
fuzz_target!(|data: &[u8]| {
|
||||
let mut ssz = SszStream::new();
|
||||
let mut number_u8 = 0;
|
||||
if data.len() >= 1 {
|
||||
number_u8 = data[0];
|
||||
}
|
||||
|
||||
ssz.append(&number_u8);
|
||||
let ssz = ssz.drain();
|
||||
|
||||
// TODO: change to little endian bytes
|
||||
// https://github.com/sigp/lighthouse/issues/215
|
||||
assert_eq!(number_u8, ssz[0]);
|
||||
assert_eq!(ssz.len(), 1);
|
||||
});
|
Loading…
Reference in New Issue
Block a user