diff --git a/Cargo.toml b/Cargo.toml index f978f65b24..59514fe07f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,6 +54,7 @@ anyhow = "1.0.19" [workspace] members = [ + "crates/fuzzing", "crates/misc/rust", "crates/misc/py", ] diff --git a/crates/fuzzing/Cargo.toml b/crates/fuzzing/Cargo.toml new file mode 100644 index 0000000000..b0711d63df --- /dev/null +++ b/crates/fuzzing/Cargo.toml @@ -0,0 +1,11 @@ +[package] +authors = ["The Wasmtime Project Developers"] +description = "Fuzzing infrastructure for Wasmtime" +edition = "2018" +name = "wasmtime-fuzzing" +publish = false +version = "0.1.0" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/crates/fuzzing/README.md b/crates/fuzzing/README.md new file mode 100644 index 0000000000..12c5852cf5 --- /dev/null +++ b/crates/fuzzing/README.md @@ -0,0 +1,14 @@ +# Fuzzing Infrastructure for Wasmtime + +This crate provides test case generators and oracles for use with fuzzing. + +These generators and oracles are generally independent of the fuzzing engine +that might be using them and driving the whole fuzzing process (e.g. libFuzzer +or AFL). As such, this crate does *not* contain any actual fuzz targets +itself. Those are generally just a couple lines of glue code that plug raw input +from (for example) `libFuzzer` into a generator, and then run one or more +oracles on the generated test case. + +If you're looking for the actual fuzz target definitions we currently have, they +live in `wasmtime/fuzz/fuzz_targets/*` and are driven by `cargo fuzz` and +`libFuzzer`. diff --git a/crates/fuzzing/src/lib.rs b/crates/fuzzing/src/lib.rs new file mode 100644 index 0000000000..e69de29bb2