From c16925ba75b981b7c34d21710a323a9635ffe960 Mon Sep 17 00:00:00 2001 From: Adis Nezirovic Date: Tue, 5 May 2020 13:57:28 +0200 Subject: [PATCH] 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 --- src/hlua_fcn.c | 6 ++++++ 1 file changed, 6 insertions(+) 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); -- 1.7.10.4