details:   https://hg.nginx.org/njs/rev/da7d4c125a9c
branches:  
changeset: 1507:da7d4c125a9c
user:      Dmitry Volyntsev <[email protected]>
date:      Thu Aug 27 14:43:19 2020 +0000
description:
Parser: fixed njs_queue_remove() macro usage.

The issue caused segfault when NJS_DEBUG is defined.

The issue was introduced in 86f55a7dc4a4.

diffstat:

 src/njs_parser.c |  4 +++-
 src/njs_parser.h |  5 +++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diffs (40 lines):

diff -r fbee1514cf43 -r da7d4c125a9c src/njs_parser.c
--- a/src/njs_parser.c  Wed Aug 26 21:11:03 2020 +0300
+++ b/src/njs_parser.c  Thu Aug 27 14:43:19 2020 +0000
@@ -480,13 +480,15 @@ njs_parser_not_supported(njs_parser_t *p
 njs_inline njs_int_t
 njs_parser_reject(njs_parser_t *parser)
 {
+    njs_queue_link_t          *link;
     njs_parser_stack_entry_t  *entry;
 
     while (!njs_queue_is_empty(&parser->stack)) {
         entry = njs_queue_link_data(njs_queue_first(&parser->stack),
                                     njs_parser_stack_entry_t, link);
 
-        njs_queue_remove(njs_queue_first(&parser->stack));
+        link = njs_queue_first(&parser->stack);
+        njs_queue_remove(link);
 
         if (!entry->optional) {
             njs_parser_next(parser, entry->state);
diff -r fbee1514cf43 -r da7d4c125a9c src/njs_parser.h
--- a/src/njs_parser.h  Wed Aug 26 21:11:03 2020 +0300
+++ b/src/njs_parser.h  Thu Aug 27 14:43:19 2020 +0000
@@ -280,13 +280,14 @@ njs_parser_height(njs_parser_t *parser, 
 njs_inline njs_int_t
 njs_parser_stack_pop(njs_parser_t *parser)
 {
+    njs_queue_link_t          *link;
     njs_parser_stack_entry_t  *entry;
 
-
     entry = njs_queue_link_data(njs_queue_first(&parser->stack),
                                 njs_parser_stack_entry_t, link);
 
-    njs_queue_remove(njs_queue_first(&parser->stack));
+    link = njs_queue_first(&parser->stack);
+    njs_queue_remove(link);
 
 #ifdef NJS_PARSER_DEBUG
     njs_printf("  stack_pop(%d)\n",
_______________________________________________
nginx-devel mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx-devel

Reply via email to