From: Thierry Fournier Date: Sat, 28 Nov 2020 15:08:02 +0000 (+0100) Subject: BUG/MINOR: lua: Some lua init operation are processed unsafe X-Git-Tag: v2.4-dev3~134 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f05cc6f86ee6beda9c42a6bb99a9a96fad37b68;p=thirdparty%2Fhaproxy.git BUG/MINOR: lua: Some lua init operation are processed unsafe Operation luaL_openlibs() and lua_prepend path are processed whithout the safe context, so in case of failure Haproxy aborts or stops without error message. This patch could be backported until 1.8 --- diff --git a/src/hlua.c b/src/hlua.c index e1c316bd64..43a9745e45 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -8221,6 +8221,16 @@ void hlua_init(void) * process of HAProxy, this abort() is tolerated. */ + /* Set safe environment for the initialisation. */ + if (!SET_SAFE_LJMP(gL.T)) { + if (lua_type(gL.T, -1) == LUA_TSTRING) + error_msg = lua_tostring(gL.T, -1); + else + error_msg = "critical error"; + fprintf(stderr, "Lua init: %s.\n", error_msg); + exit(1); + } + /* Initialise lua. */ luaL_openlibs(gL.T); #define HLUA_PREPEND_PATH_TOSTRING1(x) #x @@ -8234,16 +8244,6 @@ void hlua_init(void) #undef HLUA_PREPEND_PATH_TOSTRING #undef HLUA_PREPEND_PATH_TOSTRING1 - /* Set safe environment for the initialisation. */ - if (!SET_SAFE_LJMP(gL.T)) { - if (lua_type(gL.T, -1) == LUA_TSTRING) - error_msg = lua_tostring(gL.T, -1); - else - error_msg = "critical error"; - fprintf(stderr, "Lua init: %s.\n", error_msg); - exit(1); - } - /* * * Create "core" object.