Fix fuzzer code

This commit is contained in:
Rerumu 2022-04-27 04:08:47 -04:00
parent 6b0a704ebb
commit c5a1afb228
5 changed files with 30 additions and 65 deletions

View File

@ -21,20 +21,17 @@ path = "../wasm-ast"
[dependencies.codegen-luajit] [dependencies.codegen-luajit]
path = "../codegen-luajit" path = "../codegen-luajit"
[dependencies.codegen-luau]
path = "../codegen-luau"
[[bin]] [[bin]]
name = "full_transpile" name = "luajit_translate"
path = "fuzz_targets/full_transpile.rs" path = "fuzz_targets/luajit_translate.rs"
test = false test = false
doc = false doc = false
[[bin]] [[bin]]
name = "just_writer" name = "luau_translate"
path = "fuzz_targets/just_writer.rs" path = "fuzz_targets/luau_translate.rs"
test = false
doc = false
[[bin]]
name = "just_builder"
path = "fuzz_targets/just_builder.rs"
test = false test = false
doc = false doc = false

View File

@ -1,22 +0,0 @@
#![no_main]
use parity_wasm::elements::Module as WasmModule;
use wasm_smith::Module as SmModule;
use codegen_luajit::gen::Generator;
use wasm_ast::writer::Transpiler;
fn fuzz_transformer(wasm: &WasmModule) {
let trans = Generator::new(wasm);
let _func = trans.build_func_list();
}
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

@ -1,26 +0,0 @@
#![no_main]
use std::io::Result;
use parity_wasm::elements::Module as WasmModule;
use wasm_smith::Module as SmModule;
use codegen_luajit::gen::Generator;
use wasm_ast::writer::Transpiler;
fn fuzz_writer(wasm: &WasmModule) -> Result<()> {
let trans = Generator::new(wasm);
let list = trans.build_func_list();
trans.gen_func_list(&list, &mut std::io::sink())
}
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).expect("LuaJIT should succeed");
});

View File

@ -1,12 +1,9 @@
#![no_main] #![no_main]
use wasm_ast::builder::TypeInfo;
use wasm_smith::Module; use wasm_smith::Module;
use codegen_luajit::gen::Generator;
use wasm_ast::writer::Transpiler;
// We are not interested in parity_wasm errors. // We are not interested in parity_wasm errors.
// Only 1 edition should need to be tested too.
libfuzzer_sys::fuzz_target!(|module: Module| { libfuzzer_sys::fuzz_target!(|module: Module| {
let data = module.to_bytes(); let data = module.to_bytes();
let wasm = match parity_wasm::deserialize_buffer(&data) { let wasm = match parity_wasm::deserialize_buffer(&data) {
@ -14,7 +11,8 @@ libfuzzer_sys::fuzz_target!(|module: Module| {
Err(_) => return, Err(_) => return,
}; };
Generator::new(&wasm) let type_info = TypeInfo::from_module(&wasm);
.transpile(&mut std::io::sink()) let sink = &mut std::io::sink();
.expect("LuaJIT should succeed");
codegen_luajit::translate(&wasm, &type_info, sink).expect("LuaJIT should succeed");
}); });

View File

@ -0,0 +1,18 @@
#![no_main]
use wasm_ast::builder::TypeInfo;
use wasm_smith::Module;
// We are not interested in parity_wasm errors.
libfuzzer_sys::fuzz_target!(|module: Module| {
let data = module.to_bytes();
let wasm = match parity_wasm::deserialize_buffer(&data) {
Ok(v) => v,
Err(_) => return,
};
let type_info = TypeInfo::from_module(&wasm);
let sink = &mut std::io::sink();
codegen_luau::translate(&wasm, &type_info, sink).expect("Luau should succeed");
});