Skip to content

Commit

Permalink
Merge #741
Browse files Browse the repository at this point in the history
741: add validate_wasm fuzzer r=syrusakbary a=pventuzelo

useful to fuzz validation mechanism and wasmparser library.

Co-authored-by: Patrick Ventuzelo <ventuzelo.patrick@gmail.com>
Co-authored-by: Patrick Ventuzelo <9038181+pventuzelo@users.noreply.github.com>
  • Loading branch information
3 people authored Sep 3, 2019
2 parents 80c1359 + 7680c0e commit 688d0a2
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
6 changes: 6 additions & 0 deletions fuzz/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ cargo-fuzz = true

[dependencies]
wasmer-runtime = { path = "../lib/runtime" }
wasmer-runtime-core = { path = "../lib/runtime-core" }
wasmer = { path = "../" }
libfuzzer-sys = { git = "https://github.com/rust-fuzz/libfuzzer-sys.git" }

# Prevent this from interfering with workspaces
Expand All @@ -19,3 +21,7 @@ members = ["."]
[[bin]]
name = "simple_instantiate"
path = "fuzz_targets/simple_instantiate.rs"

[[bin]]
name = "validate_wasm"
path = "fuzz_targets/validate_wasm.rs"
6 changes: 5 additions & 1 deletion fuzz/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,16 @@ $ cargo install cargo-fuzz

`cargo-fuzz` is documented in the [Rust Fuzz Book](https://rust-fuzz.github.io/book/cargo-fuzz.html).

## Running a fuzzer
## Running a fuzzer (simple_instantiate, validate_wasm)

Once `cargo-fuzz` is installed, you can run the `simple_instantiate` fuzzer with
```sh
cargo fuzz run simple_instantiate
```
or the `validate_wasm` fuzzer
```sh
cargo fuzz run validate_wasm
```

You should see output that looks something like this:

Expand Down
19 changes: 19 additions & 0 deletions fuzz/fuzz_targets/validate_wasm.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#![no_main]
#[macro_use] extern crate libfuzzer_sys;

extern crate wasmer_runtime_core;
extern crate wasmer;

use wasmer_runtime_core::{
backend::{Features},
};

fuzz_target!(|data: &[u8]| {
let _ = wasmer::utils::is_wasm_binary(data);
let _ = wasmer_runtime_core::validate_and_report_errors_with_features(
&data,
Features {
// modify those values to explore additionnal part of wasmer
simd: false, threads: false, },
);
});

0 comments on commit 688d0a2

Please sign in to comment.