
commit
bc5f9668e9
3 changed files with 69 additions and 0 deletions
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
[package] |
||||
name = "wasmfuzz" |
||||
version = "0.1.0" |
||||
edition = "2021" |
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html |
||||
|
||||
[dependencies] |
||||
wasmi = "0.9.1" |
||||
wabt = "0.10.0" |
@ -0,0 +1,57 @@
@@ -0,0 +1,57 @@
|
||||
use wasmi::{ModuleInstance, ImportsBuilder, NopExternals, RuntimeValue}; |
||||
|
||||
fn init_population() -> Vec<u8> { |
||||
unimplemented!(); |
||||
} |
||||
|
||||
fn mutate() -> Vec<u8> { |
||||
unimplemented!(); |
||||
} |
||||
|
||||
fn asd() { |
||||
// Parse WAT (WebAssembly Text format) into wasm bytecode.
|
||||
let wasm_binary: Vec<u8> = |
||||
wabt::wat2wasm( |
||||
r#" |
||||
(module |
||||
(func (export "test") (result i32) |
||||
i32.const 1337 |
||||
) |
||||
) |
||||
"#, |
||||
) |
||||
.expect("failed to parse wat"); |
||||
|
||||
// Load wasm binary and prepare it for instantiation.
|
||||
let module = wasmi::Module::from_buffer(&wasm_binary) |
||||
.expect("failed to load wasm"); |
||||
|
||||
// Instantiate a module with empty imports and
|
||||
// assert that there is no `start` function.
|
||||
let instance = |
||||
ModuleInstance::new( |
||||
&module, |
||||
&ImportsBuilder::default() |
||||
) |
||||
.expect("failed to instantiate wasm module") |
||||
.assert_no_start(); |
||||
|
||||
// Finally, invoke the exported function "test" with no parameters
|
||||
// and empty external function executor.
|
||||
assert_eq!( |
||||
instance.invoke_export( |
||||
"test", |
||||
&[], |
||||
&mut NopExternals, |
||||
).expect("failed to execute export"), |
||||
Some(RuntimeValue::I32(1337)), |
||||
); |
||||
} |
||||
|
||||
#[cfg(test)] |
||||
mod tests { |
||||
#[test] |
||||
fn it_works() { |
||||
super::asd(); |
||||
} |
||||
} |
Loading…
Reference in new issue