initial commit

master
silur 2021-11-29 23:11:47 +01:00
commit bc5f9668e9
3 changed files with 69 additions and 0 deletions

2
.gitignore vendored 100644
View File

@ -0,0 +1,2 @@
/target
Cargo.lock

10
Cargo.toml 100644
View File

@ -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"

57
src/lib.rs 100644
View File

@ -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();
}
}