浏览代码

LibWasm: Correctly validate `v128_load*_lane` instructions

Diego Frias 11 月之前
父节点
当前提交
8a0ef17d9a
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      Userland/Libraries/LibWasm/AbstractMachine/Validator.cpp

+ 2 - 2
Userland/Libraries/LibWasm/AbstractMachine/Validator.cpp

@@ -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);