From: Alexander Borisov Date: Fri, 19 Jun 2020 16:48:12 +0000 (+0300) Subject: Parser: fixed heap-use-after-free in optional chain. X-Git-Tag: 0.4.2~21 X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/%7B@url%7D?a=commitdiff_plain;h=9ab210e3ada48506c5f1a32009717cb081e94b12;p=njs.git Parser: fixed heap-use-after-free in optional chain. --- diff --git a/src/njs_parser.c b/src/njs_parser.c index 61d76c9d..9b4632d8 100644 --- a/src/njs_parser.c +++ b/src/njs_parser.c @@ -2881,10 +2881,6 @@ njs_parser_optional_chain(njs_parser_t *parser, njs_lexer_token_t *token, break; default: - if (!njs_lexer_token_is_identifier_name(token)) { - njs_lexer_consume_token(parser->lexer, 1); - } - ret = njs_parser_property(parser, token, current); switch (ret) { diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index 2eef5c5a..b7052caf 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -17016,6 +17016,9 @@ static njs_unit_test_t njs_test[] = { njs_str("{{} ({a: 1, b: {}\n}\n})\n}"), njs_str("SyntaxError: Unexpected token \"}\" in 3") }, + + { njs_str("object?."), + njs_str("SyntaxError: Unexpected end of input in 1") }, };