Просмотр исходного кода

Correct some error handling path in libc_emcc (#4803)

TianlongLiang 2 дней назад
Родитель
Сommit
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;
 }