wasmtime: clarify Memory::{read,write} behavior with out-of-bounds ranges

This documents that we will never do partial reads/writes, and expands our
existing tests to assert this.
This commit is contained in:
Nick Fitzgerald
2021-01-26 10:11:29 -08:00
parent 0cdc80fbf8
commit 4f3bc1d5d4
2 changed files with 12 additions and 4 deletions

View File

@@ -363,11 +363,18 @@ fn read_write_memory_via_api() {
let res = mem.write(mem.data_size() - value.len() + 1, value);
assert!(res.is_err());
assert_ne!(
unsafe { mem.data_unchecked()[mem.data_size() - value.len() + 1] },
value[0],
"no data is written",
);
// Out of bounds read.
buffer[0] = 0x42;
let res = mem.read(mem.data_size() - buffer.len() + 1, &mut buffer);
assert!(res.is_err());
assert_eq!(buffer[0], 0x42, "no data is read");
// Read offset overflow.
let res = mem.read(usize::MAX, &mut buffer);