MemoryAccessOutOfBounds for mem get and set.
This commit is contained in:
parent
65a339847a
commit
ace9191299
|
@ -543,7 +543,8 @@ impl<'a, E: Externals> Interpreter<'a, E> {
|
||||||
let m = context.module()
|
let m = context.module()
|
||||||
.memory_by_index(DEFAULT_MEMORY_INDEX)
|
.memory_by_index(DEFAULT_MEMORY_INDEX)
|
||||||
.expect("Due to validation memory should exists");
|
.expect("Due to validation memory should exists");
|
||||||
let b = m.get(address, mem::size_of::<T>())?;
|
let b = m.get(address, mem::size_of::<T>())
|
||||||
|
.map_err(|_| Error::Trap(Trap::MemoryAccessOutOfBounds))?;
|
||||||
let n = T::from_little_endian(&b)?;
|
let n = T::from_little_endian(&b)?;
|
||||||
context.value_stack_mut().push(n.into())?;
|
context.value_stack_mut().push(n.into())?;
|
||||||
Ok(InstructionOutcome::RunNextInstruction)
|
Ok(InstructionOutcome::RunNextInstruction)
|
||||||
|
@ -560,7 +561,8 @@ impl<'a, E: Externals> Interpreter<'a, E> {
|
||||||
let m = context.module()
|
let m = context.module()
|
||||||
.memory_by_index(DEFAULT_MEMORY_INDEX)
|
.memory_by_index(DEFAULT_MEMORY_INDEX)
|
||||||
.expect("Due to validation memory should exists");
|
.expect("Due to validation memory should exists");
|
||||||
let b = m.get(address, mem::size_of::<T>())?;
|
let b = m.get(address, mem::size_of::<T>())
|
||||||
|
.map_err(|_| Error::Trap(Trap::MemoryAccessOutOfBounds))?;
|
||||||
let v = T::from_little_endian(&b)?;
|
let v = T::from_little_endian(&b)?;
|
||||||
let stack_value: U = v.extend_into();
|
let stack_value: U = v.extend_into();
|
||||||
context
|
context
|
||||||
|
@ -586,7 +588,8 @@ impl<'a, E: Externals> Interpreter<'a, E> {
|
||||||
let m = context.module()
|
let m = context.module()
|
||||||
.memory_by_index(DEFAULT_MEMORY_INDEX)
|
.memory_by_index(DEFAULT_MEMORY_INDEX)
|
||||||
.expect("Due to validation memory should exists");
|
.expect("Due to validation memory should exists");
|
||||||
m.set(address, &stack_value)?;
|
m.set(address, &stack_value)
|
||||||
|
.map_err(|_| Error::Trap(Trap::MemoryAccessOutOfBounds))?;
|
||||||
Ok(InstructionOutcome::RunNextInstruction)
|
Ok(InstructionOutcome::RunNextInstruction)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -616,7 +619,8 @@ impl<'a, E: Externals> Interpreter<'a, E> {
|
||||||
let m = context.module()
|
let m = context.module()
|
||||||
.memory_by_index(DEFAULT_MEMORY_INDEX)
|
.memory_by_index(DEFAULT_MEMORY_INDEX)
|
||||||
.expect("Due to validation memory should exists");
|
.expect("Due to validation memory should exists");
|
||||||
m.set(address, &stack_value)?;
|
m.set(address, &stack_value)
|
||||||
|
.map_err(|_| Error::Trap(Trap::MemoryAccessOutOfBounds))?;
|
||||||
Ok(InstructionOutcome::RunNextInstruction)
|
Ok(InstructionOutcome::RunNextInstruction)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue