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 +