From b076313d5546918583135e776e82d0343cc7652f Mon Sep 17 00:00:00 2001 From: Victor Polevoy Date: Mon, 22 May 2023 18:04:42 +0200 Subject: [PATCH] Add checks for the module initialisation. This should fix the ASAN issues and possible issues at runtime. --- src/macros.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/macros.rs b/src/macros.rs index a0b429eb..6476f951 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -190,6 +190,22 @@ macro_rules! redis_module { use $crate::configuration::get_bool_default_config_value; use $crate::configuration::get_enum_default_config_value; + if ctx.is_null() { + return raw::Status::Err as _; + } + + if argv.is_null() && argc != 0 { + return raw::Status::Err as _; + } + + if !argv.is_null() && unsafe { (*argv).is_null() } { + return raw::Status::Err as _; + } + + if !argv.is_null() && unsafe { !(*argv).is_null() } && argc.is_negative() { + return raw::Status::Err as _; + } + // We use a statically sized buffer to avoid allocating. // This is needed since we use a custom allocator that relies on the Redis allocator, // which isn't yet ready at this point.