From 32e7e15b29663df6034ac21916c1fd19362a3d58 Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Fri, 26 Feb 2021 23:31:30 +0000 Subject: luatex: sync with the upstream git-svn-id: svn://tug.org/texlive/trunk@57960 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/luatexdir/luatex_svnversion.h | 2 +- Build/source/texk/web2c/luatexdir/tex/scanning.c | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Build/source/texk/web2c/luatexdir/luatex_svnversion.h b/Build/source/texk/web2c/luatexdir/luatex_svnversion.h index dd8dc72f0ae..59a54e0f6f6 100644 --- a/Build/source/texk/web2c/luatexdir/luatex_svnversion.h +++ b/Build/source/texk/web2c/luatexdir/luatex_svnversion.h @@ -1 +1 @@ -#define luatex_svn_revision 7410 +#define luatex_svn_revision 7411 diff --git a/Build/source/texk/web2c/luatexdir/tex/scanning.c b/Build/source/texk/web2c/luatexdir/tex/scanning.c index deddbf5649b..f3313f065b5 100644 --- a/Build/source/texk/web2c/luatexdir/tex/scanning.c +++ b/Build/source/texk/web2c/luatexdir/tex/scanning.c @@ -19,6 +19,8 @@ LuaTeX; if not, see . #include "ptexlib.h" +static int nesting = 0; +# define max_nesting 1000 static void scan_expr(void); /*tex @@ -2519,7 +2521,17 @@ static void scan_expr(void) a = arith_error; b = false; p = null; - /*tex Scan and evaluate an expression |e| of type |l|. */ + /*tex + + Scan and evaluate an expression |e| of type |l|. + To avoid an infinite recursion we set|max_nesting| as upper limit. + This limit is unrelated to the expansion limit |expand_depth| and it cannot be modify at compile time. + + */ + nesting++; + if (nesting > max_nesting) { + formatted_error("tex", "\\*expr can only be nested %d deep",max_nesting); + } RESTART: r = expr_none; e = 0; @@ -2748,4 +2760,5 @@ static void scan_expr(void) arith_error = a; cur_val = e; cur_val_level = l; + nesting--; } -- cgit v1.2.3