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
This commit is contained in:
Thierry Fournier 2020-11-28 16:08:02 +01:00 committed by Willy Tarreau
parent 13d08b73eb
commit 2f05cc6f86

View File

@ -8221,6 +8221,16 @@ void hlua_init(void)
* process of HAProxy, this abort() is tolerated. * 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. */ /* Initialise lua. */
luaL_openlibs(gL.T); luaL_openlibs(gL.T);
#define HLUA_PREPEND_PATH_TOSTRING1(x) #x #define HLUA_PREPEND_PATH_TOSTRING1(x) #x
@ -8234,16 +8244,6 @@ void hlua_init(void)
#undef HLUA_PREPEND_PATH_TOSTRING #undef HLUA_PREPEND_PATH_TOSTRING
#undef HLUA_PREPEND_PATH_TOSTRING1 #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. * Create "core" object.