Merge pull request from GHSA-44mr-8vmm-wjhg
Ensure that support is not regressed in keeping this working.
This commit is contained in:
@@ -778,3 +778,39 @@ fn dynamic_memory_pooling_allocator() -> Result<()> {
|
|||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn zero_memory_pages_disallows_oob() -> Result<()> {
|
||||||
|
let mut pool = PoolingAllocationConfig::default();
|
||||||
|
pool.instance_count(1).instance_memory_pages(0);
|
||||||
|
let mut config = Config::new();
|
||||||
|
config.allocation_strategy(InstanceAllocationStrategy::Pooling(pool));
|
||||||
|
|
||||||
|
let engine = Engine::new(&config)?;
|
||||||
|
let module = Module::new(
|
||||||
|
&engine,
|
||||||
|
r#"
|
||||||
|
(module
|
||||||
|
(memory 0)
|
||||||
|
|
||||||
|
(func (export "load") (param i32) (result i32)
|
||||||
|
local.get 0
|
||||||
|
i32.load)
|
||||||
|
|
||||||
|
(func (export "store") (param i32 )
|
||||||
|
local.get 0
|
||||||
|
local.get 0
|
||||||
|
i32.store)
|
||||||
|
)
|
||||||
|
"#,
|
||||||
|
)?;
|
||||||
|
let mut store = Store::new(&engine, ());
|
||||||
|
let instance = Instance::new(&mut store, &module, &[])?;
|
||||||
|
let load32 = instance.get_typed_func::<i32, i32, _>(&mut store, "load")?;
|
||||||
|
let store32 = instance.get_typed_func::<i32, (), _>(&mut store, "store")?;
|
||||||
|
for i in 0..31 {
|
||||||
|
assert!(load32.call(&mut store, 1 << i).is_err());
|
||||||
|
assert!(store32.call(&mut store, 1 << i).is_err());
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user