diff options
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | fuzz/Cargo.toml | 25 | ||||
-rw-r--r-- | fuzz/fuzz_targets/micromark.rs | 16 | ||||
-rw-r--r-- | readme.md | 5 |
4 files changed, 49 insertions, 0 deletions
@@ -5,3 +5,6 @@ coverage/ target commonmark-data.txt unicode-data.txt +fuzz/target +fuzz/corpus +fuzz/artifacts diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml new file mode 100644 index 0000000..3c19003 --- /dev/null +++ b/fuzz/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "micromark-fuzz" +version = "0.0.0" +authors = ["Automatically generated"] +publish = false +edition = "2018" + +[package.metadata] +cargo-fuzz = true + +[dependencies] +libfuzzer-sys = "0.4" + +[dependencies.micromark] +path = ".." + +# Prevent this from interfering with workspaces +[workspace] +members = ["."] + +[[bin]] +name = "micromark" +path = "fuzz_targets/micromark.rs" +test = false +doc = false diff --git a/fuzz/fuzz_targets/micromark.rs b/fuzz/fuzz_targets/micromark.rs new file mode 100644 index 0000000..f4d2927 --- /dev/null +++ b/fuzz/fuzz_targets/micromark.rs @@ -0,0 +1,16 @@ +#![no_main] +use libfuzzer_sys::fuzz_target; +extern crate micromark; + +fuzz_target!(|data: &[u8]| { + if let Ok(s) = std::str::from_utf8(data) { + let _ = micromark::micromark(s); + let _ = micromark::micromark_with_options( + s, + µmark::Options { + constructs: micromark::Constructs::gfm(), + ..micromark::Options::default() + }, + ); + } +}); @@ -372,6 +372,11 @@ The following scripts are useful when working on this project: ```sh cargo doc --document-private-items ``` +- fuzz: + ```sh + cargo install cargo-fuzz + cargo +nightly fuzz run micromark + ``` ### Version |