]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: lua: handle stick table implicit arguments right.
authorOlivier Houchard <cognet@ci0.org>
Mon, 12 Sep 2022 22:35:53 +0000 (00:35 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 3 Oct 2022 17:08:10 +0000 (19:08 +0200)
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.

src/hlua.c

index cc2e6a6e2395bab7472c7ecada003a20bc925bf4..ee48f5c92fee7b7467f2e3faa7e3befc91cc6387 100644 (file)
@@ -860,7 +860,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;