Welcome! Log In Create A New Profile

Advanced

[njs] Increased max function nesting.

Dmitry Volyntsev
August 23, 2019 02:50PM
details: https://hg.nginx.org/njs/rev/a3e8a7a51161
branches:
changeset: 1142:a3e8a7a51161
user: Dmitry Volyntsev <xeioex@nginx.com>
date: Fri Aug 23 20:00:40 2019 +0300
description:
Increased max function nesting.

diffstat:

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

diffs (58 lines):

diff -r 8057f3ad56c1 -r a3e8a7a51161 src/njs_parser.c
--- a/src/njs_parser.c Fri Aug 23 15:13:45 2019 +0300
+++ b/src/njs_parser.c Fri Aug 23 20:00:40 2019 +0300
@@ -153,7 +153,7 @@ njs_parser_scope_begin(njs_vm_t *vm, njs
if (scope->type == NJS_SCOPE_FUNCTION) {
nesting = scope->nesting + 1;

- if (nesting <= NJS_MAX_NESTING) {
+ if (nesting < NJS_MAX_NESTING) {
break;
}

diff -r 8057f3ad56c1 -r a3e8a7a51161 src/njs_vm.h
--- a/src/njs_vm.h Fri Aug 23 15:13:45 2019 +0300
+++ b/src/njs_vm.h Fri Aug 23 20:00:40 2019 +0300
@@ -59,9 +59,9 @@ typedef enum {

/*
* The maximum possible function nesting level is (16 - NJS_SCOPE_CLOSURE),
- * that is 11. The 5 is reasonable limit.
+ * that is 11. The 8 is reasonable limit.
*/
-#define NJS_MAX_NESTING 5
+#define NJS_MAX_NESTING 8

#define NJS_SCOPES (NJS_SCOPE_CLOSURE + NJS_MAX_NESTING)

diff -r 8057f3ad56c1 -r a3e8a7a51161 src/test/njs_unit_test.c
--- a/src/test/njs_unit_test.c Fri Aug 23 15:13:45 2019 +0300
+++ b/src/test/njs_unit_test.c Fri Aug 23 20:00:40 2019 +0300
@@ -6559,9 +6559,24 @@ static njs_unit_test_t njs_test[] =
{ njs_str("function x(a) { while (a < 2) a++; return a + 1 } x(1) "),
njs_str("3") },

- { njs_str("(function(){(function(){(function(){(function(){"
- "(function(){(function(){(function(){})})})})})})})"),
- njs_str("SyntaxError: The maximum function nesting level is \"5\" in 1") },
+ { njs_str("(function(){"
+ "(function(){"
+ "(function(){"
+ "(function(){"
+ "(function(){"
+ "(function(){"
+ "(function(){"
+ "(function(){"
+ "(function(){})"
+ "})"
+ "})"
+ "})"
+ "})"
+ "})"
+ "})"
+ "})"
+ "})"),
+ njs_str("SyntaxError: The maximum function nesting level is \"8\" in 1") },

{ njs_str("Function.prototype.toString = function () {return 'X'};"
"eval"),
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[njs] Increased max function nesting.

Dmitry Volyntsev 349 August 23, 2019 02:50PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 250
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready