]> git.kaiwu.me - njs.git/commitdiff
Modules: initialize shared dict state file before allocation
authorDmitry Volyntsev <xeioex@nginx.com>
Fri, 9 Oct 2026 22:59:52 +0000 (15:59 -0700)
committerDmitry Volyntsev <xeioexception@gmail.com>
Thu, 15 Oct 2026 01:49:05 +0000 (18:49 -0700)
Initialize the state file descriptor before allocating chain links and
buffers.  Allocation failures otherwise reach cleanup with an
uninitialized descriptor and may close an unrelated file.

nginx/ngx_js_shared_dict.c

index 49bf4a57c784e7d755525259dbc41bd7e537dfdc..35631f2cbe3c9bd11c9485bf57546243ff1ad7a9 100644 (file)
@@ -2609,6 +2609,11 @@ ngx_js_dict_save(ngx_js_dict_t *dict)
 
     name = dict->state_temp_file.data;
 
+    ngx_memzero(&file, sizeof(ngx_file_t));
+    file.fd = NGX_INVALID_FILE;
+    file.name = dict->state_temp_file;
+    file.log = log;
+
     out = NULL;
     ll = &out;
 
@@ -2634,10 +2639,6 @@ ngx_js_dict_save(ngx_js_dict_t *dict)
 
     *ll = NULL;
 
-    ngx_memzero(&file, sizeof(ngx_file_t));
-    file.name = dict->state_temp_file;
-    file.log = log;
-
     file.fd = ngx_open_file(file.name.data, NGX_FILE_WRONLY, NGX_FILE_TRUNCATE,
                             NGX_FILE_DEFAULT_ACCESS);