From 2075777c351110d44f2730fb2af635031601659c Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Tue, 13 Sep 2022 00:35:53 +0200 Subject: [PATCH] BUG/MEDIUM: lua: handle stick table implicit arguments right. In hlua_lua2arg_check(), we allow for the first argument to not be provided, if it has a type we know, this is true for frontend, backend, and stick table. However, the stick table code was changed. It used to be deduced from the proxy, but it is now directly provided in struct args. So setting the proxy there no longer work, and we have to explicitely set the stick table. Not doing so will lead the code do use the proxy pointer as a stick table pointer, which will likely cause crashes. This should be backported up to 2.0. (cherry picked from commit 14f62688839dc7245ca87e040f14fbd2147698e6) Signed-off-by: Christopher Faulet --- src/hlua.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/hlua.c b/src/hlua.c index 617de6479..2c7294461 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -857,7 +857,11 @@ __LJMP int hlua_lua2arg_check(lua_State *L, int first, struct arg *argp, break; case ARGT_TAB: - argp[idx].data.prx = p; + if (!p->table) { + msg = "Mandatory argument expected"; + goto error; + } + argp[idx].data.t = p->table; argp[idx].type = ARGT_TAB; argp[idx+1].type = ARGT_STOP; break;