Add more fuzz targets
This commit is contained in:
@@ -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);
|
||||
});
|
||||
@@ -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");
|
||||
});
|
||||
Reference in New Issue
Block a user