Add fuzz target
This commit is contained in:
parent
c323b35961
commit
dd55770f43
@ -1,2 +1,2 @@
|
|||||||
[workspace]
|
[workspace]
|
||||||
members = ["wasm"]
|
members = ["fuzz", "wasm"]
|
||||||
|
2
fuzz/.gitignore
vendored
Normal file
2
fuzz/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
corpus
|
||||||
|
artifacts
|
25
fuzz/Cargo.toml
Normal file
25
fuzz/Cargo.toml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
[package]
|
||||||
|
name = "fuzz"
|
||||||
|
version = "0.0.0"
|
||||||
|
publish = false
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[package.metadata]
|
||||||
|
cargo-fuzz = true
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
libfuzzer-sys = "0.4"
|
||||||
|
wasm-smith = "0.8.0"
|
||||||
|
|
||||||
|
[dependencies.parity-wasm]
|
||||||
|
git = "https://github.com/paritytech/parity-wasm.git"
|
||||||
|
features = ["multi_value", "sign_ext"]
|
||||||
|
|
||||||
|
[dependencies.wasm]
|
||||||
|
path = "../wasm"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "translator"
|
||||||
|
path = "fuzz_targets/translator.rs"
|
||||||
|
test = false
|
||||||
|
doc = false
|
30
fuzz/fuzz_targets/translator.rs
Normal file
30
fuzz/fuzz_targets/translator.rs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#![no_main]
|
||||||
|
|
||||||
|
use std::io::Result;
|
||||||
|
|
||||||
|
use parity_wasm::elements::Module as WasmModule;
|
||||||
|
use wasm_smith::Module as SmModule;
|
||||||
|
|
||||||
|
use wasm::backend::{
|
||||||
|
edition::{data::Edition, luajit::LuaJIT},
|
||||||
|
translator::data::Module,
|
||||||
|
};
|
||||||
|
|
||||||
|
fn fuzz_translate(wasm: &WasmModule, ed: &dyn Edition) -> Result<()> {
|
||||||
|
let mut sink = std::io::sink();
|
||||||
|
let module = Module::new(wasm);
|
||||||
|
|
||||||
|
module.translate(ed, &mut sink)
|
||||||
|
}
|
||||||
|
|
||||||
|
// We are not interested in parity_wasm errors.
|
||||||
|
// Only 1 edition should need to be tested too.
|
||||||
|
libfuzzer_sys::fuzz_target!(|module: SmModule| {
|
||||||
|
let data = module.to_bytes();
|
||||||
|
let wasm = match parity_wasm::deserialize_buffer(&data) {
|
||||||
|
Ok(v) => v,
|
||||||
|
Err(_) => return,
|
||||||
|
};
|
||||||
|
|
||||||
|
fuzz_translate(&wasm, &LuaJIT).expect("LuaJIT should succeed");
|
||||||
|
});
|
1
wasm/src/lib.rs
Normal file
1
wasm/src/lib.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
pub mod backend;
|
Loading…
x
Reference in New Issue
Block a user