]> git.kaiwu.me - njs.git/commitdiff
Fixed default module loader.
authorDmitry Volyntsev <xeioex@nginx.com>
Mon, 7 Nov 2022 22:22:41 +0000 (14:22 -0800)
committerDmitry Volyntsev <xeioex@nginx.com>
Mon, 7 Nov 2022 22:22:41 +0000 (14:22 -0800)
Previously, njs_mp_free() was called with invalid pointer because
njs_vm_compile_module() shifts start argument to the last reading
position.

This closes #601 issue on Github.

src/njs_module.c

index 78206b3babe3b0da6df7cc5a9279ed738478bdee..7af75ac7b5cb77d41962425051003d0c4dc5f8ef 100644 (file)
@@ -361,10 +361,11 @@ static njs_mod_t *
 njs_default_module_loader(njs_vm_t *vm, njs_external_ptr_t external,
     njs_str_t *name)
 {
+    u_char             *start;
     njs_int_t          ret;
     njs_str_t          cwd, text;
-    njs_parser_t       *prev;
     njs_mod_t          *module;
+    njs_parser_t       *prev;
     njs_module_info_t  info;
 
     prev = external;
@@ -388,7 +389,9 @@ njs_default_module_loader(njs_vm_t *vm, njs_external_ptr_t external,
         return NULL;
     }
 
-    module = njs_vm_compile_module(vm, &info.file, &text.start,
+    start = text.start;
+
+    module = njs_vm_compile_module(vm, &info.file, &start,
                                    &text.start[text.length]);
 
     njs_mp_free(vm->mem_pool, text.start);