[njs] Fixed ‘length’ may be used uninitialized in Array.prototype.pop().

noreply at nginx.com noreply at nginx.com
Sat Jun 29 02:53:03 UTC 2024


details:   https://hg.nginx.org/njs/rev/146d4699a4c4
branches:  
changeset: 2362:146d4699a4c4
user:      Dmitry Volyntsev <xeioex at nginx.com>
date:      Thu Jun 20 17:26:14 2024 -0700
description:
Fixed ‘length’ may be used uninitialized in Array.prototype.pop().

When building by GCC with -O3 and -flto flags the following
warning was reported:
src/njs_array.c: In function ‘njs_array_prototype_pop’:
src/njs_array.c:1009:8: error: ‘length’ may be used uninitialized in
this function [-Werror=maybe-uninitialized]
1009 | if (length == 0) {
     |     ^

Returning a specific code in njs_value_to_number() helps GCC
to infer that there are only 2 return values are possible and
both of them are handled.

diffstat:

 src/njs_value_conversion.h |  2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diffs (12 lines):

diff -r 8b182df14819 -r 146d4699a4c4 src/njs_value_conversion.h
--- a/src/njs_value_conversion.h	Wed Jun 12 23:31:08 2024 -0700
+++ b/src/njs_value_conversion.h	Thu Jun 20 17:26:14 2024 -0700
@@ -17,7 +17,7 @@ njs_value_to_number(njs_vm_t *vm, njs_va
     if (njs_slow_path(!njs_is_primitive(value))) {
         ret = njs_value_to_primitive(vm, &primitive, value, 0);
         if (njs_slow_path(ret != NJS_OK)) {
-            return ret;
+            return NJS_ERROR;
         }
 
         value = &primitive;


More information about the nginx-devel mailing list