diff options
author | Keith Winstein <keithw@cs.stanford.edu> | 2023-06-12 12:37:13 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-12 19:37:13 +0000 |
commit | 5edb24126ed5183d35b317478fc5a7f8ca831ac9 (patch) | |
tree | 2aa2afeb559a575bdc2b83760a51d809b6907895 /test/spec/memory64/memory64.txt | |
parent | 4247346029a7c4697df884590c6385561e772b97 (diff) | |
download | wabt-5edb24126ed5183d35b317478fc5a7f8ca831ac9.tar.gz wabt-5edb24126ed5183d35b317478fc5a7f8ca831ac9.tar.bz2 wabt-5edb24126ed5183d35b317478fc5a7f8ca831ac9.zip |
memory64: when enabled, check offset range at validation-time (#2253)
* memory64: when enabled, offset range check is at validation-time
Before memory64, the "offset" in a load/store expression was
a u32, and we enforced this in the WastParser and BinaryReader.
After memory64, the "offset" becomes a u64 syntactically, and the
validator checks that it's <= UINT32_MAX for i32 memories.
We hadn't been correctly allowing these very large offsets
in the text format (even when memory64 was enabled and the memory
was i64).
(This change also eliminates the "memories" member in the
BinaryReader. The BinaryReader no longer needs to keep track
of the memories and their types to check well-formedness.)
Diffstat (limited to 'test/spec/memory64/memory64.txt')
-rw-r--r-- | test/spec/memory64/memory64.txt | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/test/spec/memory64/memory64.txt b/test/spec/memory64/memory64.txt index b3fa5c9d..daad2004 100644 --- a/test/spec/memory64/memory64.txt +++ b/test/spec/memory64/memory64.txt @@ -18,13 +18,21 @@ out/test/spec/memory64/memory64.wast:20: assert_invalid passed: out/test/spec/memory64/memory64/memory64.11.wasm:000000c: error: memory variable out of range: 0 (max 0) 000000c: error: BeginDataSegment callback failed out/test/spec/memory64/memory64.wast:23: assert_invalid passed: - 000001b: error: load/store memory 0 out of range 0 + out/test/spec/memory64/memory64/memory64.12.wasm:000001c: error: memory variable out of range: 0 (max 0) + out/test/spec/memory64/memory64/memory64.12.wasm:000001c: error: type mismatch in f32.load, expected [i32] but got [i64] + 000001c: error: OnLoadExpr callback failed out/test/spec/memory64/memory64.wast:27: assert_invalid passed: - 0000020: error: load/store memory 0 out of range 0 + out/test/spec/memory64/memory64/memory64.13.wasm:0000021: error: memory variable out of range: 0 (max 0) + out/test/spec/memory64/memory64/memory64.13.wasm:0000021: error: type mismatch in f32.store, expected [i32, f32] but got [i64, f32] + 0000021: error: OnStoreExpr callback failed out/test/spec/memory64/memory64.wast:31: assert_invalid passed: - 000001b: error: load/store memory 0 out of range 0 + out/test/spec/memory64/memory64/memory64.14.wasm:000001c: error: memory variable out of range: 0 (max 0) + out/test/spec/memory64/memory64/memory64.14.wasm:000001c: error: type mismatch in i32.load8_s, expected [i32] but got [i64] + 000001c: error: OnLoadExpr callback failed out/test/spec/memory64/memory64.wast:35: assert_invalid passed: - 000001d: error: load/store memory 0 out of range 0 + out/test/spec/memory64/memory64/memory64.15.wasm:000001e: error: memory variable out of range: 0 (max 0) + out/test/spec/memory64/memory64/memory64.15.wasm:000001e: error: type mismatch in i32.store8, expected [i32, i32] but got [i64, i32] + 000001e: error: OnStoreExpr callback failed out/test/spec/memory64/memory64.wast:39: assert_invalid passed: out/test/spec/memory64/memory64/memory64.16.wasm:0000019: error: memory variable out of range: 0 (max 0) 0000019: error: OnMemorySizeExpr callback failed |