diff --git a/.gitignore b/.gitignore index f2cb326..111b028 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ Cargo.lock .directory Notes.md +fuzz/coverage diff --git a/fuzz/README.md b/fuzz/README.md new file mode 100644 index 0000000..fd6b25f --- /dev/null +++ b/fuzz/README.md @@ -0,0 +1,13 @@ +# How to run fuzz tests + +1. Install [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz) + + ```sh + cargo install cargo-fuzz + ``` + +2. Run a fuzzing target and find bugs! (needs nighly toolchain) + + ```sh + cargo +nightly fuzz run fuzz_target_1` + ``` diff --git a/fuzz/fuzz_targets/fuzz_target_1.rs b/fuzz/fuzz_targets/fuzz_target_1.rs index e217589..8a4b4e5 100644 --- a/fuzz/fuzz_targets/fuzz_target_1.rs +++ b/fuzz/fuzz_targets/fuzz_target_1.rs @@ -1,14 +1,14 @@ #![no_main] extern crate winnow; +use flatzinc::Stmt; use libfuzzer_sys::fuzz_target; -pub use winnow::error::ContextError; fuzz_target!(|data: &[u8]| { // fuzzed code goes here - if let Ok(mut utf8_str) = std::str::from_utf8(data) { - match flatzinc::statement::(&mut utf8_str) { - Ok(result) => println!("{:#?}", result), - Err(e) => print!("Failed to parse flatzinc: {:?}", e), + if let Ok(utf8_str) = std::str::from_utf8(data) { + match ::from_str(utf8_str) { + Ok(result) => println!("{}\n{:#?}", utf8_str, result), + Err(_) => print!(" Failed to parse test data."), } } else { // print!("No valid utf8!")