From 55b5481e7cb0492aed18d4e4cfb2e60ea83b07da Mon Sep 17 00:00:00 2001 From: Thibault Charbonnier Date: Sun, 5 May 2024 15:24:36 -0700 Subject: [PATCH] fix(lib) prevent a segfault loading an empty .wat module with V8 Fixing it at the ngx-wasm-rs level produces a more descriptive error message than doing it at the C level. Fix #543 --- lib/ngx-wasm-rs/lib/wat/src/lib.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/ngx-wasm-rs/lib/wat/src/lib.rs b/lib/ngx-wasm-rs/lib/wat/src/lib.rs index 077ef0bd3..4ac81cacd 100644 --- a/lib/ngx-wasm-rs/lib/wat/src/lib.rs +++ b/lib/ngx-wasm-rs/lib/wat/src/lib.rs @@ -39,9 +39,13 @@ pub unsafe extern "C" fn ngx_wasm_wat_to_wasm( wat: *const wasm_byte_vec_t, wasm: *mut wasm_byte_vec_t, ) -> Option> { - let wat_slice; + let empty = Vec::new(); + let mut wat_slice = empty.as_ref(); + unsafe { - wat_slice = std::slice::from_raw_parts((*wat).data, (*wat).size); + if (*wat).size > 0 { + wat_slice = std::slice::from_raw_parts((*wat).data, (*wat).size); + } } match wabt::wat2wasm(wat_slice) {