From: Adis Nezirovic Date: Tue, 5 May 2020 11:57:28 +0000 (+0200) Subject: BUG/MEDIUM: lua: Fix dumping of stick table entries for STD_T_DICT X-Git-Tag: v2.1.5~24 X-Git-Url: http://git.haproxy.org/?a=commitdiff_plain;h=c16925ba75b981b7c34d21710a323a9635ffe960;p=haproxy-2.1.git BUG/MEDIUM: lua: Fix dumping of stick table entries for STD_T_DICT The issue can easily be reproduced with "stick on" statement backend BE_NAME stick-table type ip size 1k stick on src and calling dump() method on BE_NAME stick table from Lua Before the fix, HAProxy would return 500 and log something like the following: runtime error: attempt to index a string value from [C] method 'dump' Where one would expect a Lua table like this: { ["IP_ADDR"] = { ["server_id"] = 1, ["server_name"] = "srv1" } } This patch needs to backported to 1.9 and later releases. (cherry picked from commit ad9f9ed3f48c296a3f0fbe961ab142161c79c461) Signed-off-by: Christopher Faulet --- diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c index 7ef708c..ee73659 100644 --- a/src/hlua_fcn.c +++ b/src/hlua_fcn.c @@ -588,6 +588,12 @@ static void hlua_stktable_entry(lua_State *L, struct stktable *t, struct stksess lua_pushinteger(L, read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp), t->data_arg[dt].u)); break; + case STD_T_DICT: { + struct dict_entry *de; + de = stktable_data_cast(ptr, std_t_dict); + lua_pushstring(L, de ? (char *)de->value.key : "-"); + break; + } } lua_settable(L, -3);