diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 29d1e2e..9d09759 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -10,6 +10,7 @@ cargo-fuzz = true [dependencies] libfuzzer-sys = "0.4" saphyr.workspace = true +saphyr-parser.workspace = true [[bin]] name = "parse" diff --git a/fuzz/fuzz_targets/parse.rs b/fuzz/fuzz_targets/parse.rs index b8b6911..ab1b05d 100644 --- a/fuzz/fuzz_targets/parse.rs +++ b/fuzz/fuzz_targets/parse.rs @@ -4,6 +4,31 @@ use libfuzzer_sys::fuzz_target; fuzz_target!(|data: &[u8]| { 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); } });