'lua_State.nci' must be an integer

Lua can easily overflow an unsigned short counting nested calls.
(The limit to this value is the maximum stack size, LUAI_MAXSTACK,
which is currently 1e6.)
This commit is contained in:
Roberto Ierusalimschy
2025-02-26 11:31:10 -03:00
parent ceac82f78b
commit f9e35627ed
3 changed files with 18 additions and 3 deletions

View File

@@ -290,7 +290,6 @@ struct lua_State {
CommonHeader;
lu_byte allowhook;
TStatus status;
unsigned short nci; /* number of items in 'ci' list */
StkIdRel top; /* first free slot in the stack */
struct global_State *l_G;
CallInfo *ci; /* call info for current function */
@@ -306,6 +305,7 @@ struct lua_State {
ptrdiff_t errfunc; /* current error handling function (stack index) */
l_uint32 nCcalls; /* number of nested non-yieldable or C calls */
int oldpc; /* last pc traced */
int nci; /* number of items in 'ci' list */
int basehookcount;
int hookcount;
volatile l_signalT hookmask;