From d78677ef0077e3ff9a08f747b5ac669f06a7f846 Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Wed, 24 Jan 2018 21:32:46 +0300 Subject: [PATCH 1/3] 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()); +}); From 1dbb678d3434f7292301ced9db9a785960de5c80 Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Fri, 26 Jan 2018 11:53:30 +0300 Subject: [PATCH 2/3] Add issue number for TODO --- fuzz/fuzz_targets/load.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fuzz/fuzz_targets/load.rs b/fuzz/fuzz_targets/load.rs index 52f0956..e1f8ce9 100644 --- a/fuzz/fuzz_targets/load.rs +++ b/fuzz/fuzz_targets/load.rs @@ -6,7 +6,7 @@ extern crate wabt; fuzz_target!(|data: &[u8]| { let wasmi_result = wasmi::load_from_buffer(data); - // TODO: Do validation only! + // TODO: Do validation only! https://github.com/pepyakin/wasmi/issues/16 let wabt_result = wabt::wasm2wat(data); assert_eq!(wasmi_result.is_ok(), wabt_result.is_ok()); From e1216f633f480017ef61622f52dff571464b7147 Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Fri, 26 Jan 2018 16:28:36 +0300 Subject: [PATCH 3/3] Fix indent --- fuzz/fuzz_targets/load.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fuzz/fuzz_targets/load.rs b/fuzz/fuzz_targets/load.rs index e1f8ce9..73ed742 100644 --- a/fuzz/fuzz_targets/load.rs +++ b/fuzz/fuzz_targets/load.rs @@ -4,7 +4,7 @@ extern crate wasmi; extern crate wabt; fuzz_target!(|data: &[u8]| { - let wasmi_result = wasmi::load_from_buffer(data); + let wasmi_result = wasmi::load_from_buffer(data); // TODO: Do validation only! https://github.com/pepyakin/wasmi/issues/16 let wabt_result = wabt::wasm2wat(data);