aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2023-11-07 22:25:42 +0100
committerMike Pall <mike>2023-11-07 22:25:42 +0100
commit433d7e8d8d182f44e88b5cfdc4b2d3026469dfb7 (patch)
tree0db6991a51d2fca4257cf6b662c79d5fe50db0c6
parentd133d67c881f363f0b5584ebd21a965eb3435aa1 (diff)
downloadluajit-433d7e8d8d182f44e88b5cfdc4b2d3026469dfb7.tar.gz
luajit-433d7e8d8d182f44e88b5cfdc4b2d3026469dfb7.tar.bz2
luajit-433d7e8d8d182f44e88b5cfdc4b2d3026469dfb7.zip
FFI: Fix pragma push stack limit check and throw on overflow.
Reported by Sergey Kaplun. #1114
-rw-r--r--src/lj_cparse.c4
1 files changed, 3 insertions, 1 deletions
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)
1747 cp_check(cp, '('); 1747 cp_check(cp, '(');
1748 if (cp->tok == CTOK_IDENT) { 1748 if (cp->tok == CTOK_IDENT) {
1749 if (cp->str->hash == H_(738e923c,a1b65954)) { /* push */ 1749 if (cp->str->hash == H_(738e923c,a1b65954)) { /* push */
1750 if (cp->curpack < CPARSE_MAX_PACKSTACK) { 1750 if (cp->curpack < CPARSE_MAX_PACKSTACK-1) {
1751 cp->packstack[cp->curpack+1] = cp->packstack[cp->curpack]; 1751 cp->packstack[cp->curpack+1] = cp->packstack[cp->curpack];
1752 cp->curpack++; 1752 cp->curpack++;
1753 } else {
1754 cp_errmsg(cp, cp->tok, LJ_ERR_XLEVELS);
1753 } 1755 }
1754 } else if (cp->str->hash == H_(6c71cf27,6c71cf27)) { /* pop */ 1756 } else if (cp->str->hash == H_(6c71cf27,6c71cf27)) { /* pop */
1755 if (cp->curpack > 0) cp->curpack--; 1757 if (cp->curpack > 0) cp->curpack--;