From 02f59f10b273ad9c6e0058b998ee12fc20df5659 Mon Sep 17 00:00:00 2001 From: linear0211 Date: Fri, 12 Sep 2025 21:00:00 +0900 Subject: [PATCH] Add mask validation --- core/iwasm/common/wasm_runtime_common.c | 8 +++++++- .../libc-wasi/sandboxed-system-primitives/src/posix.c | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/iwasm/common/wasm_runtime_common.c b/core/iwasm/common/wasm_runtime_common.c index 9c4e8b968..4ef53fd0a 100644 --- a/core/iwasm/common/wasm_runtime_common.c +++ b/core/iwasm/common/wasm_runtime_common.c @@ -3834,13 +3834,19 @@ wasm_runtime_init_wasi(WASMModuleInstanceCommon *module_inst, goto fail; } + errno = 0; mask_val = strtol(mask, &endptr, 10); - if (*endptr != '\0') { + if (mask == endptr || *endptr != '\0') { snprintf(error_buf, error_buf_size, "Invalid address pool entry: mask must be a number"); goto fail; } + if (errno != 0 || mask_val < 0 || mask_val > 128) { + snprintf(error_buf, error_buf_size, + "Init wasi environment failed: invalid mask number"); + goto fail; + } ret = addr_pool_insert(apool, address, (uint8)mask_val); wasm_runtime_free(cp); diff --git a/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c b/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c index 3d90811bc..a0bbafac3 100644 --- a/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c +++ b/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src/posix.c @@ -3116,10 +3116,18 @@ addr_pool_insert(struct addr_pool *addr_pool, const char *addr, uint8 mask) next->type = IPv6; bh_memcpy_s(next->addr.ip6, sizeof(next->addr.ip6), target.ipv6, sizeof(target.ipv6)); + if (mask > 128) { + wasm_runtime_free(next); + return false; + } } else { next->type = IPv4; next->addr.ip4 = target.ipv4; + if (mask > 32) { + wasm_runtime_free(next); + return false; + } } /* attach with */