| #![no_main] |
| #[macro_use] |
| extern crate libfuzzer_sys; |
| extern crate wasmi; |
| extern crate wasmparser; |
| |
| use wasmparser::WasmDecoder; |
| |
| fn run_wasmparser(data: &[u8]) -> bool { |
| let mut parser = wasmparser::ValidatingParser::new(data, None); |
| let result = loop { |
| match *parser.read() { |
| wasmparser::ParserState::Error(..) => break false, |
| wasmparser::ParserState::EndWasm => break true, |
| _ => (), |
| } |
| }; |
| result |
| } |
| |
| fn run_wasmi(data: &[u8]) -> bool { |
| wasmi::Module::from_buffer(data).is_ok() |
| } |
| |
| fuzz_target!(|data: &[u8]| { |
| let wasmparser_success = run_wasmparser(data); |
| let wasmi_success = run_wasmi(data); |
| assert_eq!(wasmparser_success, wasmi_success); |
| }); |