libs/libpng: Update to 1.6.32
[feed/packages.git] / net / haproxy / patches / 0003-BUG-MINOR-lua-executes-the-function-destroying-the-L.patch
1 From 49d319a677432b69c6a69ef5331ae2ed592075c9 Mon Sep 17 00:00:00 2001
2 From: Thierry FOURNIER <thierry.fournier@ozon.io>
3 Date: Wed, 12 Jul 2017 13:41:33 +0200
4 Subject: [PATCH 03/18] BUG/MINOR: lua: executes the function destroying the
5 Lua session in safe mode
6
7 When we destroy the Lua session, we manipulates Lua stack,
8 so errors can raises. It will be better to catch these errors.
9
10 This patch should be backported in 1.6 and 1.7
11 (cherry picked from commit 75d0208009c3189b5d10793e08f27dd62a76c3ae)
12
13 Signed-off-by: Willy Tarreau <w@1wt.eu>
14 ---
15 src/hlua.c | 17 +++++++++++++++--
16 1 file changed, 15 insertions(+), 2 deletions(-)
17
18 diff --git a/src/hlua.c b/src/hlua.c
19 index 4c1c2d21..2d312804 100644
20 --- a/src/hlua.c
21 +++ b/src/hlua.c
22 @@ -876,9 +876,15 @@ void hlua_ctx_destroy(struct hlua *lua)
23 /* Purge all the pending signals. */
24 hlua_com_purge(lua);
25
26 + if (!SET_SAFE_LJMP(lua->T))
27 + return;
28 luaL_unref(lua->T, LUA_REGISTRYINDEX, lua->Mref);
29 - luaL_unref(gL.T, LUA_REGISTRYINDEX, lua->Tref);
30 + RESET_SAFE_LJMP(lua->T);
31
32 + if (!SET_SAFE_LJMP(gL.T))
33 + return;
34 + luaL_unref(gL.T, LUA_REGISTRYINDEX, lua->Tref);
35 + RESET_SAFE_LJMP(gL.T);
36 /* Forces a garbage collecting process. If the Lua program is finished
37 * without error, we run the GC on the thread pointer. Its freed all
38 * the unused memory.
39 @@ -889,9 +895,16 @@ void hlua_ctx_destroy(struct hlua *lua)
40 * the garbage collection.
41 */
42 if (lua->flags & HLUA_MUST_GC) {
43 + if (!SET_SAFE_LJMP(lua->T))
44 + return;
45 lua_gc(lua->T, LUA_GCCOLLECT, 0);
46 - if (lua_status(lua->T) != LUA_OK)
47 + RESET_SAFE_LJMP(lua->T);
48 + if (lua_status(lua->T) != LUA_OK) {
49 + if (!SET_SAFE_LJMP(gL.T))
50 + return;
51 lua_gc(gL.T, LUA_GCCOLLECT, 0);
52 + RESET_SAFE_LJMP(gL.T);
53 + }
54 }
55
56 lua->T = NULL;
57 --
58 2.13.0
59