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 e1c316b..43a9745 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -8221,6 +8221,16 @@
* 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 @@
#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.