[njs] Fixed parsing of invalid for-var statement.

Vadim Zhestikov v.zhestikov at f5.com
Thu Jun 1 16:42:01 UTC 2023


details:   https://hg.nginx.org/njs/rev/d73bfec720b9
branches:  
changeset: 2145:d73bfec720b9
user:      Vadim Zhestikov <v.zhestikov at f5.com>
date:      Thu Jun 01 09:39:27 2023 -0700
description:
Fixed parsing of invalid for-var statement.

diffstat:

 src/njs_parser.c         |  10 ++++------
 src/test/njs_unit_test.c |   3 +++
 2 files changed, 7 insertions(+), 6 deletions(-)

diffs (33 lines):

diff -r aa05db6d896f -r d73bfec720b9 src/njs_parser.c
--- a/src/njs_parser.c	Thu Jun 01 09:39:25 2023 -0700
+++ b/src/njs_parser.c	Thu Jun 01 09:39:27 2023 -0700
@@ -5908,12 +5908,10 @@ njs_parser_for_var_binding_or_var_list(n
             njs_lexer_consume_token(parser->lexer, 2);
 
             return NJS_DONE;
-        }
-
-        parser->node = NULL;
-
-        njs_parser_next(parser, njs_parser_expression);
-        return NJS_OK;
+
+        } else {
+            return njs_parser_failed(parser);
+        }
     }
 }
 
diff -r aa05db6d896f -r d73bfec720b9 src/test/njs_unit_test.c
--- a/src/test/njs_unit_test.c	Thu Jun 01 09:39:25 2023 -0700
+++ b/src/test/njs_unit_test.c	Thu Jun 01 09:39:27 2023 -0700
@@ -2972,6 +2972,9 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("for(c=let c"),
       njs_str("SyntaxError: Unexpected token \"let\" in 1") },
 
+    { njs_str("for(var``>0; 0 ;) ;"),
+      njs_str("SyntaxError: Unexpected token \"`\" in 1") },
+
     /* switch. */
 
     { njs_str("switch"),


More information about the nginx-devel mailing list