Merge commit from fork

If `--addr-pool=1.2.3.4`, the runtime will return an error.
The value must be in the form of ADDRESS/MASK.
This commit is contained in:
liang.he 2025-07-27 14:38:56 +08:00 committed by GitHub
parent c080aa80d0
commit 121232a995
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 13 additions and 3 deletions

View File

@ -3810,7 +3810,15 @@ wasm_runtime_init_wasi(WASMModuleInstanceCommon *module_inst,
address = strtok(cp, "/");
mask = strtok(NULL, "/");
ret = addr_pool_insert(apool, address, (uint8)(mask ? atoi(mask) : 0));
if (!mask) {
snprintf(error_buf, error_buf_size,
"Invalid address pool entry: %s, must be in the format of "
"ADDRESS/MASK",
addr_pool[i]);
goto fail;
}
ret = addr_pool_insert(apool, address, (uint8)atoi(mask));
wasm_runtime_free(cp);
if (!ret) {
set_error_buf(error_buf, error_buf_size,

View File

@ -58,7 +58,8 @@ enabled.
_iwasm_ accepts address ranges via an option, `--addr-pool`, to implement
the capability control. All IP address the WebAssembly application may need to `bind()` or `connect()`
should be announced first. Every IP address should be in CIDR notation.
should be announced first. Every IP address should be in CIDR notation. If not, _iwasm_ will return
an error.
```bash
$ iwasm --addr-pool=1.2.3.4/15,2.3.4.6/16 socket_example.wasm

View File

@ -45,7 +45,7 @@ libc_wasi_print_help(void)
"path, for example:\n");
printf(" --map-dir=<guest-path1::host-path1> "
"--map-dir=<guest-path2::host-path2>\n");
printf(" --addr-pool=<addrs> Grant wasi access to the given network "
printf(" --addr-pool=<addr/mask> Grant wasi access to the given network "
"addresses in\n");
printf(" CIDR notation to the program, separated "
"with ',',\n");

View File

@ -171,6 +171,7 @@ set(WAMR_BUILD_JIT 0)
set(WAMR_BUILD_LIBC_BUILTIN 1)
set(WAMR_BUILD_LIBC_WASI 1)
set(WAMR_BUILD_LIB_PTHREAD 1)
set(WAMR_BUILD_REF_TYPES 1)
# compiling and linking flags
if (NOT (CMAKE_C_COMPILER MATCHES ".*clang.*" OR CMAKE_C_COMPILER_ID MATCHES ".*Clang"))