From 8a0ef17d9a9621ab4bd52dc402c0fbd57944d42c Mon Sep 17 00:00:00 2001 From: Diego Frias Date: Mon, 15 Jul 2024 06:53:03 -0700 Subject: [PATCH] LibWasm: Correctly validate `v128_load*_lane` instructions --- Userland/Libraries/LibWasm/AbstractMachine/Validator.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibWasm/AbstractMachine/Validator.cpp b/Userland/Libraries/LibWasm/AbstractMachine/Validator.cpp index 0ccc80ea47d..fb64c4e1b97 100644 --- a/Userland/Libraries/LibWasm/AbstractMachine/Validator.cpp +++ b/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);