details:   https://hg.nginx.org/njs/rev/ee4d396aa418
branches:  
changeset: 2255:ee4d396aa418
user:      Dmitry Volyntsev <xei...@nginx.com>
date:      Mon Jan 08 16:40:42 2024 -0800
description:
Fixed initialization of external prototypes with object entry.

When external was NULL (for example, when .u.object.properties is not
declared), an arithmetic operation was performed with NULL pointer which
is undefined behavior.

Found by UndefinedBehaviorSanitizer.

diffstat:

 src/njs_extern.c |  4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diffs (14 lines):

diff -r c43745da92cd -r ee4d396aa418 src/njs_extern.c
--- a/src/njs_extern.c  Mon Jan 08 16:40:42 2024 -0800
+++ b/src/njs_extern.c  Mon Jan 08 16:40:42 2024 -0800
@@ -34,6 +34,10 @@ njs_external_add(njs_vm_t *vm, njs_arr_t
     hash = &slot->external_shared_hash;
     njs_lvlhsh_init(hash);
 
+    if (n == 0) {
+        return NJS_OK;
+    }
+
     lhq.replace = 0;
     lhq.proto = &njs_object_hash_proto;
     lhq.pool = vm->mem_pool;
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-devel

Reply via email to