LibWasm: Correctly validate v128_load*_lane instructions

This commit is contained in:
Diego Frias 2024-07-15 06:53:03 -07:00 committed by Andrew Kaster
parent f5326f1747
commit 8a0ef17d9a
Notes: sideshowbarker 2024-07-17 06:51:40 +09:00

View file

@ -2847,7 +2847,7 @@ VALIDATE_INSTRUCTION(v128_load8_lane)
constexpr auto max_lane = 128 / N;
constexpr auto max_alignment = N / 8;
if (arg.lane > max_lane)
if (arg.lane >= max_lane)
return Errors::out_of_bounds("lane index"sv, arg.lane, 0u, max_lane);
TRY(validate(arg.memory.memory_index));
@ -2906,7 +2906,7 @@ VALIDATE_INSTRUCTION(v128_load64_lane)
TRY(validate(arg.memory.memory_index));
if (arg.memory.align > max_alignment)
if ((1 << arg.memory.align) > max_alignment)
return Errors::out_of_bounds("memory op alignment"sv, 1 << arg.memory.align, 0u, max_alignment);
return stack.take_and_put<ValueType::V128, ValueType::I32>(ValueType::V128);