From 433d7e8d8d182f44e88b5cfdc4b2d3026469dfb7 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Tue, 7 Nov 2023 22:25:42 +0100 Subject: [PATCH] FFI: Fix pragma push stack limit check and throw on overflow. Reported by Sergey Kaplun. #1114 --- src/lj_cparse.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lj_cparse.c b/src/lj_cparse.c index f807c5ae..2ef7dbe1 100644 --- a/src/lj_cparse.c +++ b/src/lj_cparse.c @@ -1747,9 +1747,11 @@ static void cp_pragma(CPState *cp, BCLine pragmaline) cp_check(cp, '('); if (cp->tok == CTOK_IDENT) { if (cp->str->hash == H_(738e923c,a1b65954)) { /* push */ - if (cp->curpack < CPARSE_MAX_PACKSTACK) { + if (cp->curpack < CPARSE_MAX_PACKSTACK-1) { cp->packstack[cp->curpack+1] = cp->packstack[cp->curpack]; cp->curpack++; + } else { + cp_errmsg(cp, cp->tok, LJ_ERR_XLEVELS); } } else if (cp->str->hash == H_(6c71cf27,6c71cf27)) { /* pop */ if (cp->curpack > 0) cp->curpack--;