Selaa lähdekoodia

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.
liang.he 5 kuukautta sitten
vanhempi
sitoutus
121232a995

+ 9 - 1
core/iwasm/common/wasm_runtime_common.c

@@ -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,

+ 2 - 1
doc/socket_api.md

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

+ 1 - 1
product-mini/platforms/common/libc_wasi.c

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

+ 1 - 0
samples/socket-api/CMakeLists.txt

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