avoid unaligned accesses to types casted from byte stream in WAVM's wasm parser #1648
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
WAVM's parser casts
Opcode
andOpcodeAndImm<>
to pointers at arbitrary bytes within the WASM byte stream. For example,leap/libraries/wasm-jit/Include/IR/Operators.h
Lines 327 to 341 in 6132e3b
However,
Opcode
(including theOpcode
in theOpcodeAndImm<>
struct), is auint16_t
which gives the compiler leeway to use instructions that require 2-byte alignment on access. On x86 and ARM8 this is not a problem but it's still UB to spec, so prudent to resolve.