Fuzz with both StrInput and BufferedInput.

This commit is contained in:
Ethiraric 2024-10-20 16:21:25 +02:00
parent 9d1bd1c929
commit 9812dacc28
2 changed files with 27 additions and 1 deletions

View file

@ -10,6 +10,7 @@ cargo-fuzz = true
[dependencies] [dependencies]
libfuzzer-sys = "0.4" libfuzzer-sys = "0.4"
saphyr.workspace = true saphyr.workspace = true
saphyr-parser.workspace = true
[[bin]] [[bin]]
name = "parse" name = "parse"

View file

@ -4,6 +4,31 @@ use libfuzzer_sys::fuzz_target;
fuzz_target!(|data: &[u8]| { fuzz_target!(|data: &[u8]| {
if let Ok(s) = std::str::from_utf8(data) { if let Ok(s) = std::str::from_utf8(data) {
let _ = saphyr::Yaml::load_from_str(s); let mut str_events = vec![];
let mut str_error = None;
let mut iter_events = vec![];
let mut iter_error = None;
for x in saphyr_parser::Parser::new_from_str(s) {
match x {
Ok(event) => str_events.push(event),
Err(e) => {
str_error = Some(e);
break;
}
}
}
for x in saphyr_parser::Parser::new_from_iter(s.chars()) {
match x {
Ok(event) => iter_events.push(event),
Err(e) => {
iter_error = Some(e);
break;
}
}
}
assert_eq!(str_events, iter_events);
assert_eq!(str_error, iter_error);
} }
}); });