From bc9b92c323cd7dae46843ef0d0f5f54f60ecaa52 Mon Sep 17 00:00:00 2001
From: Mark McCaskey <mark@wasmer.io>
Date: Tue, 29 Oct 2019 15:18:45 -0700
Subject: [PATCH] Add null checks to new destructors in C API

---
 lib/runtime-c-api/src/import/mod.rs | 7 ++++++-
 lib/runtime-c-api/tests/.gitignore  | 2 ++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/runtime-c-api/src/import/mod.rs b/lib/runtime-c-api/src/import/mod.rs
index a38645dd1..5b44eb2b5 100644
--- a/lib/runtime-c-api/src/import/mod.rs
+++ b/lib/runtime-c-api/src/import/mod.rs
@@ -315,7 +315,9 @@ pub unsafe extern "C" fn wasmer_import_object_iter_at_end(
 pub unsafe extern "C" fn wasmer_import_object_iter_destroy(
     import_object_iter: *mut wasmer_import_object_iter_t,
 ) {
-    let _ = Box::from_raw(import_object_iter as *mut WasmerImportObjectIterator);
+    if !import_object_iter.is_null() {
+        let _ = Box::from_raw(import_object_iter as *mut WasmerImportObjectIterator);
+    }
 }
 
 /// Frees the memory allocated in `wasmer_import_object_iter_next`
@@ -327,6 +329,9 @@ pub unsafe extern "C" fn wasmer_import_object_imports_destroy(
     imports: *mut wasmer_import_t,
     imports_len: u32,
 ) {
+    if imports.is_null() {
+        return;
+    }
     let imports: &[wasmer_import_t] = &*slice::from_raw_parts_mut(imports, imports_len as usize);
     for import in imports {
         let _namespace: Vec<u8> = Vec::from_raw_parts(
diff --git a/lib/runtime-c-api/tests/.gitignore b/lib/runtime-c-api/tests/.gitignore
index 26a85acee..b64fa610c 100644
--- a/lib/runtime-c-api/tests/.gitignore
+++ b/lib/runtime-c-api/tests/.gitignore
@@ -25,3 +25,5 @@ test-tables
 test-validate
 test-context
 test-module-import-instantiate
+test-wasi-import-object
+