Преглед на файлове

Correct some error handling path in libc_emcc (#4803)

TianlongLiang преди 1 месец
родител
ревизия
8d7d93d9b9
променени са 1 файла, в които са добавени 10 реда и са изтрити 3 реда
  1. 10 3
      core/iwasm/libraries/libc-emcc/libc_emcc_wrapper.c

+ 10 - 3
core/iwasm/libraries/libc-emcc/libc_emcc_wrapper.c

@@ -245,14 +245,21 @@ mmap_wrapper(wasm_exec_env_t exec_env, void *addr, int length, int prot,
     if (buf_offset == 0)
         return -1;
 
-    if (fd <= 0)
+    if (fd <= 0) {
+        module_free((uint64)buf_offset);
         return -1;
+    }
 
-    if (lseek(fd, offset, SEEK_SET) == -1)
+    if (lseek(fd, offset, SEEK_SET) == -1) {
+        module_free((uint64)buf_offset);
         return -1;
+    }
 
     size_read = read(fd, buf, length);
-    (void)size_read;
+    if (size_read < 0) {
+        module_free((uint64)buf_offset);
+        return -1;
+    }
     return buf_offset;
 }