Skip to content

Commit

Permalink
Cover parsing/serializing roundtrip in fuzzers
Browse files Browse the repository at this point in the history
  • Loading branch information
apasel422 committed Feb 19, 2025
1 parent f42aadb commit 62a5cc3
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 3 deletions.
13 changes: 12 additions & 1 deletion fuzz/fuzz_targets/parse_dictionary.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
#![no_main]

use libfuzzer_sys::fuzz_target;
use sfv::SerializeValue as _;

fuzz_target!(|data: &[u8]| {
let _ = sfv::Parser::from_bytes(data).parse_dictionary();
if let Ok(dict) = sfv::Parser::from_bytes(data).parse_dictionary() {
let serialized = dict.serialize_value();
if dict.is_empty() {
assert!(serialized.is_err());
} else {
assert_eq!(
sfv::Parser::from_bytes(serialized.unwrap().as_bytes()).parse_dictionary(),
Ok(dict)
);
}
}
});
9 changes: 8 additions & 1 deletion fuzz/fuzz_targets/parse_item.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
#![no_main]

use libfuzzer_sys::fuzz_target;
use sfv::SerializeValue as _;

fuzz_target!(|data: &[u8]| {
let _ = sfv::Parser::from_bytes(data).parse_item();
if let Ok(item) = sfv::Parser::from_bytes(data).parse_item() {
let serialized = item.serialize_value().unwrap();
assert_eq!(
sfv::Parser::from_bytes(serialized.as_bytes()).parse_item(),
Ok(item)
);
}
});
13 changes: 12 additions & 1 deletion fuzz/fuzz_targets/parse_list.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
#![no_main]

use libfuzzer_sys::fuzz_target;
use sfv::SerializeValue as _;

fuzz_target!(|data: &[u8]| {
let _ = sfv::Parser::from_bytes(data).parse_list();
if let Ok(list) = sfv::Parser::from_bytes(data).parse_list() {
let serialized = list.serialize_value();
if list.is_empty() {
assert!(serialized.is_err());
} else {
assert_eq!(
sfv::Parser::from_bytes(serialized.unwrap().as_bytes()).parse_list(),
Ok(list)
);
}
}
});

0 comments on commit 62a5cc3

Please sign in to comment.