Skip to content

Commit

Permalink
Ignore error setting data in memory out of range.
Browse files Browse the repository at this point in the history
This wasm module is valid:
```
(module
  (memory (;0;) 0)
  (data (;0;) (i32.const 34) ""))
```
and we want to just ignore that problem.
  • Loading branch information
nlewycky committed Mar 15, 2021
1 parent 3474959 commit 0e1d4be
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 4 deletions.
13 changes: 12 additions & 1 deletion fuzz/fuzz_targets/jit_cranelift.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,16 @@ fuzz_target!(|module: ConfiguredModule<NoImportsConfig>| {
compiler.enable_verifier();
let store = Store::new(&JIT::new(compiler).engine());
let module = Module::new(&store, &wasm_bytes).unwrap();
Instance::new(&module, &imports! {}).unwrap();
match Instance::new(&module, &imports! {}) {
Ok(_) => {}
Err(e) => {
let error_message = format!("{}", e);
if error_message
.contains("RuntimeError: memory out of bounds: data segment does not fit")
{
return;
}
panic!("{}", e);
}
}
});
13 changes: 12 additions & 1 deletion fuzz/fuzz_targets/jit_llvm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,16 @@ fuzz_target!(|module: ConfiguredModule<NoImportsConfig>| {
compiler.enable_verifier();
let store = Store::new(&JIT::new(compiler).engine());
let module = Module::new(&store, &wasm_bytes).unwrap();
Instance::new(&module, &imports! {}).unwrap();
match Instance::new(&module, &imports! {}) {
Ok(_) => {}
Err(e) => {
let error_message = format!("{}", e);
if error_message
.contains("RuntimeError: memory out of bounds: data segment does not fit")
{
return;
}
panic!("{}", e);
}
}
});
13 changes: 12 additions & 1 deletion fuzz/fuzz_targets/jit_singlepass.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,16 @@ fuzz_target!(|module: ConfiguredModule<NoImportsConfig>| {
panic!("{}", e);
}
};
let _ignored = Instance::new(&module, &imports! {});
match Instance::new(&module, &imports! {}) {
Ok(_) => {}
Err(e) => {
let error_message = format!("{}", e);
if error_message
.contains("RuntimeError: memory out of bounds: data segment does not fit")
{
return;
}
panic!("{}", e);
}
}
});
13 changes: 12 additions & 1 deletion fuzz/fuzz_targets/native_cranelift.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,16 @@ fuzz_target!(|module: ConfiguredModule<NoImportsConfig>| {
let engine = Native::headless().engine();
let store = Store::new(&engine);
let module = unsafe { Module::deserialize(&store, serialized.as_slice()) }.unwrap();
Instance::new(&module, &imports! {}).unwrap();
match Instance::new(&module, &imports! {}) {
Ok(_) => {}
Err(e) => {
let error_message = format!("{}", e);
if error_message
.contains("RuntimeError: memory out of bounds: data segment does not fit")
{
return;
}
panic!("{}", e);
}
}
});

0 comments on commit 0e1d4be

Please sign in to comment.