Add more fuzz targets

This commit is contained in:
Rerumu 2021-11-28 16:14:07 -05:00
parent cbf212b636
commit 82e97ad643
6 changed files with 75 additions and 4 deletions

View File

@ -19,7 +19,19 @@ features = ["multi_value", "sign_ext"]
path = "../wasm" path = "../wasm"
[[bin]] [[bin]]
name = "translator" name = "full_translate"
path = "fuzz_targets/translator.rs" path = "fuzz_targets/full_translate.rs"
test = false
doc = false
[[bin]]
name = "just_writer"
path = "fuzz_targets/just_writer.rs"
test = false
doc = false
[[bin]]
name = "just_transformer"
path = "fuzz_targets/just_transformer.rs"
test = false test = false
doc = false doc = false

View File

@ -0,0 +1,24 @@
#![no_main]
use parity_wasm::elements::Module as WasmModule;
use wasm_smith::Module as SmModule;
use wasm::backend::{ast::transformer::Transformer, translator::arity::List};
fn fuzz_transformer(wasm: &WasmModule) {
let arity = List::new(wasm);
for i in 0..arity.in_arity.len() {
let _ = Transformer::new(wasm, &arity).consume(i);
}
}
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_transformer(&wasm);
});

View File

@ -0,0 +1,35 @@
#![no_main]
use std::io::Result;
use parity_wasm::elements::Module as WasmModule;
use wasm_smith::Module as SmModule;
use wasm::backend::{
ast::transformer::Transformer,
edition::{data::Edition, luajit::LuaJIT},
translator::{arity::List, writer::Data},
};
fn fuzz_writer(wasm: &WasmModule, ed: &dyn Edition) -> Result<()> {
let mut sink = std::io::sink();
let arity = List::new(wasm);
for i in 0..arity.in_arity.len() {
let func = Transformer::new(wasm, &arity).consume(i);
func.output(&mut Data::new(ed), &mut sink)?;
}
Ok(())
}
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_writer(&wasm, &LuaJIT).expect("LuaJIT should succeed");
});

View File

@ -1,4 +1,4 @@
mod ast; pub mod ast;
pub mod edition; pub mod edition;
pub mod translator; pub mod translator;
mod visitor; mod visitor;

View File

@ -1,3 +1,3 @@
pub mod arity; pub mod arity;
pub mod data; pub mod data;
mod writer; pub mod writer;