https://chromium.googlesource.com/v8/v8.git/+/0396b732e7c5d41188fcbd95b68c177a39e27a7acommit 0396b732e7c5d41188fcbd95b68c177a39e27a7a
Author: Manos Koukoutos <
mano...@chromium.org>
Date: Wed Dec 02 16:52:51 2020
[wasm-gc] read_heap_type should check if index is in module bounds
read_heap_type did not have knowledge of the module for which the heap
type was being decoded. As a result, callers of read_heap_type (or
read_value_type, which in turn calls read_heap_type) had to check after
the fact that a decoded indexed type (ref, ref null, or rtt) references
a type index within the module's bounds. This was not done consistently,
and was missing (at least) in DecodeLocals.
To avoid such problems in the future, this CL refactors read_heap_type
to accept a module and check the decoded index against it.
Changes:
- Add WasmModule argument to read_heap_type. Do so accordingly to all
its transitive callers (read_value_type, immediate arguments,
DecodeLocalDecls, DecodeValue/HeapType in unittests).
- Add index check to read_heap_type and emit an error for an
out-of-bounds index.
- Remove all other now-redundant index validations. Replace them with
decoder->ok() if needed (since read_heap_type will now emit an error).
- Fix error message in Validate for BlockTypeImmediate.
- In DecodeLocalDecls in unittests, pass an empty module to
DecodeLocalDecls in the main code.
- Add a unit test with an invalid index in local type declarations.
Bug: v8:9495
Change-Id: I4ed1204847db80f78b6ae85fa40d300cd2456295
Reviewed-on:
https://chromium-review.googlesource.com/c/v8/v8/+/2569757Reviewed-by: Jakob Kummerow <
jkum...@chromium.org>
Commit-Queue: Manos Koukoutos <
mano...@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71572}
[modify]
https://crrev.com/0396b732e7c5d41188fcbd95b68c177a39e27a7a/src/wasm/function-body-decoder-impl.h[modify]
https://crrev.com/0396b732e7c5d41188fcbd95b68c177a39e27a7a/src/wasm/function-body-decoder.cc[modify]
https://crrev.com/0396b732e7c5d41188fcbd95b68c177a39e27a7a/src/wasm/function-body-decoder.h[modify]
https://crrev.com/0396b732e7c5d41188fcbd95b68c177a39e27a7a/src/wasm/module-decoder.cc[modify]
https://crrev.com/0396b732e7c5d41188fcbd95b68c177a39e27a7a/test/common/wasm/wasm-interpreter.cc[modify]
https://crrev.com/0396b732e7c5d41188fcbd95b68c177a39e27a7a/test/fuzzer/wasm-fuzzer-common.cc[modify]
https://crrev.com/0396b732e7c5d41188fcbd95b68c177a39e27a7a/test/unittests/wasm/function-body-decoder-unittest.cc