From 79ae910a7cc5c5246ca238e10684e1661da57d0d Mon Sep 17 00:00:00 2001 From: TianlongLiang <111852609+TianlongLiang@users.noreply.github.com> Date: Mon, 29 Apr 2024 12:27:55 +0800 Subject: [PATCH] Fix loader and mini-loader select potiential error (#3374) Fix the issue reported in https://github.com/bytecodealliance/wasm-micro-runtime/issues/3361. --- core/iwasm/interpreter/wasm_loader.c | 1 + core/iwasm/interpreter/wasm_mini_loader.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/core/iwasm/interpreter/wasm_loader.c b/core/iwasm/interpreter/wasm_loader.c index 1bc51d7b9..aa92f96ee 100644 --- a/core/iwasm/interpreter/wasm_loader.c +++ b/core/iwasm/interpreter/wasm_loader.c @@ -12041,6 +12041,7 @@ re_scan: switch (*(loader_ctx->frame_ref - 1)) { case VALUE_TYPE_I32: case VALUE_TYPE_F32: + case VALUE_TYPE_ANY: break; case VALUE_TYPE_I64: case VALUE_TYPE_F64: diff --git a/core/iwasm/interpreter/wasm_mini_loader.c b/core/iwasm/interpreter/wasm_mini_loader.c index 20084e146..fa4cd0881 100644 --- a/core/iwasm/interpreter/wasm_mini_loader.c +++ b/core/iwasm/interpreter/wasm_mini_loader.c @@ -4240,7 +4240,7 @@ wasm_loader_pop_frame_ref(WASMLoaderContext *ctx, uint8 type, char *error_buf, ctx->frame_ref--; ctx->stack_cell_num--; - if (is_32bit_type(type)) + if (is_32bit_type(type) || *ctx->frame_ref == VALUE_TYPE_ANY) return true; ctx->frame_ref--; @@ -6696,6 +6696,7 @@ re_scan: switch (*(loader_ctx->frame_ref - 1)) { case REF_I32: case REF_F32: + case REF_ANY: break; case REF_I64_2: case REF_F64_2: