BUG/MEDIUM: lua: bad memory access

We cannot perform garbage collection on unreferenced thread.
This memory is now free and another Lua process can use it for
other things.

HAProxy is monothread, so this bug doesn't cause crash.

This patch must be backported in 1.6 and 1.7
This commit is contained in:
Thierry FOURNIER 2017-07-17 00:44:40 +02:00 committed by Willy Tarreau
parent b13b20a19a
commit 7bd10d58d3

View File

@ -901,16 +901,10 @@ void hlua_ctx_destroy(struct hlua *lua)
* the garbage collection.
*/
if (lua->flags & HLUA_MUST_GC) {
if (!SET_SAFE_LJMP(lua->T))
if (!SET_SAFE_LJMP(gL.T))
return;
lua_gc(lua->T, LUA_GCCOLLECT, 0);
RESET_SAFE_LJMP(lua->T);
if (lua_status(lua->T) != LUA_OK) {
if (!SET_SAFE_LJMP(gL.T))
return;
lua_gc(gL.T, LUA_GCCOLLECT, 0);
RESET_SAFE_LJMP(gL.T);
}
lua_gc(gL.T, LUA_GCCOLLECT, 0);
RESET_SAFE_LJMP(gL.T);
}
lua->T = NULL;