Add more fuzz targets
This commit is contained in:
parent
cbf212b636
commit
82e97ad643
@ -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
|
||||||
|
24
fuzz/fuzz_targets/just_transformer.rs
Normal file
24
fuzz/fuzz_targets/just_transformer.rs
Normal 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);
|
||||||
|
});
|
35
fuzz/fuzz_targets/just_writer.rs
Normal file
35
fuzz/fuzz_targets/just_writer.rs
Normal 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");
|
||||||
|
});
|
@ -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;
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
pub mod arity;
|
pub mod arity;
|
||||||
pub mod data;
|
pub mod data;
|
||||||
mod writer;
|
pub mod writer;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user