From d78677ef0077e3ff9a08f747b5ac669f06a7f846 Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Wed, 24 Jan 2018 21:32:46 +0300 Subject: [PATCH] Fuzz loading/validation against wabt. --- fuzz/.gitignore | 4 ++++ fuzz/Cargo.toml | 24 ++++++++++++++++++++++++ fuzz/fuzz_targets/load.rs | 13 +++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 fuzz/.gitignore create mode 100644 fuzz/Cargo.toml create mode 100644 fuzz/fuzz_targets/load.rs diff --git a/fuzz/.gitignore b/fuzz/.gitignore new file mode 100644 index 0000000..572e03b --- /dev/null +++ b/fuzz/.gitignore @@ -0,0 +1,4 @@ + +target +corpus +artifacts diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml new file mode 100644 index 0000000..149923a --- /dev/null +++ b/fuzz/Cargo.toml @@ -0,0 +1,24 @@ + +[package] +name = "wasmi-fuzz" +version = "0.0.1" +authors = ["Automatically generated"] +publish = false + +[package.metadata] +cargo-fuzz = true + +[dependencies] +wasmi = { path = ".." } +wabt = "0.1.6" + +[dependencies.libfuzzer-sys] +git = "https://github.com/rust-fuzz/libfuzzer-sys.git" + +# Prevent this from interfering with workspaces +[workspace] +members = ["."] + +[[bin]] +name = "load" +path = "fuzz_targets/load.rs" diff --git a/fuzz/fuzz_targets/load.rs b/fuzz/fuzz_targets/load.rs new file mode 100644 index 0000000..52f0956 --- /dev/null +++ b/fuzz/fuzz_targets/load.rs @@ -0,0 +1,13 @@ +#![no_main] +#[macro_use] extern crate libfuzzer_sys; +extern crate wasmi; +extern crate wabt; + +fuzz_target!(|data: &[u8]| { + let wasmi_result = wasmi::load_from_buffer(data); + + // TODO: Do validation only! + let wabt_result = wabt::wasm2wat(data); + + assert_eq!(wasmi_result.is_ok(), wabt_result.is_ok()); +});