From 5fb20f05ca0f5f64cbe0077f39dbd9a7cc49a18b Mon Sep 17 00:00:00 2001 From: Eric Kidd Date: Sun, 5 Mar 2017 08:17:27 -0500 Subject: [PATCH] Experiment with `cargo fuzz` This seems to find at least some issues, which I'll investigate. --- vobsub/fuzz/.gitignore | 5 +++++ vobsub/fuzz/Cargo.toml | 22 ++++++++++++++++++++++ vobsub/fuzz/fuzzers/fuzzer_script_1.rs | 11 +++++++++++ 3 files changed, 38 insertions(+) create mode 100644 vobsub/fuzz/.gitignore create mode 100644 vobsub/fuzz/Cargo.toml create mode 100644 vobsub/fuzz/fuzzers/fuzzer_script_1.rs diff --git a/vobsub/fuzz/.gitignore b/vobsub/fuzz/.gitignore new file mode 100644 index 00000000..dfeb7db1 --- /dev/null +++ b/vobsub/fuzz/.gitignore @@ -0,0 +1,5 @@ + +target +libfuzzer +corpus +artifacts diff --git a/vobsub/fuzz/Cargo.toml b/vobsub/fuzz/Cargo.toml new file mode 100644 index 00000000..728ab5c8 --- /dev/null +++ b/vobsub/fuzz/Cargo.toml @@ -0,0 +1,22 @@ + +[package] +name = "vobsub-fuzz" +version = "0.0.1" +authors = ["Automatically generated"] +publish = false + +[package.metadata] +cargo-fuzz = true + +[dependencies.vobsub] +path = ".." +[dependencies.libfuzzer-sys] +git = "https://github.com/rust-fuzz/libfuzzer-sys.git" + +# Prevent this from interfering with workspaces +[workspace] +members = ["."] + +[[bin]] +name = "fuzzer_script_1" +path = "fuzzers/fuzzer_script_1.rs" diff --git a/vobsub/fuzz/fuzzers/fuzzer_script_1.rs b/vobsub/fuzz/fuzzers/fuzzer_script_1.rs new file mode 100644 index 00000000..1c237cca --- /dev/null +++ b/vobsub/fuzz/fuzzers/fuzzer_script_1.rs @@ -0,0 +1,11 @@ +#![no_main] + +extern crate libfuzzer_sys; +extern crate vobsub; + +#[export_name="rust_fuzzer_test_input"] +pub extern fn go(data: &[u8]) { + for _ in vobsub::subtitles(data) { + // Just parse and ignore. + } +}