From: Thierry FOURNIER Date: Fri, 13 Mar 2015 13:50:06 +0000 (+0100) Subject: BUG/MEDIUM: lua: undetected infinite loop X-Git-Tag: v1.6-dev2~316 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a85cfb1db5fd0869366d3178e4103c72cbfe2a83;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: lua: undetected infinite loop If the Lua code causes an infinite loop without yield possible, the clock is not updated. This patch check the clock when the Lua control code cannot yield. --- diff --git a/src/hlua.c b/src/hlua.c index c76eb1ea72..7e416f20c1 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -856,7 +856,8 @@ void hlua_hook(lua_State *L, lua_Debug *ar) if (lua_isyieldable(L)) WILL_LJMP(hlua_yieldk(L, 0, 0, NULL, TICK_ETERNITY, HLUA_CTRLYIELD)); - /* If we cannot yield, check the timeout. */ + /* If we cannot yield, update the clock and check the timeout. */ + tv_update_date(0, 1); if (tick_is_expired(hlua->expire, now_ms)) { lua_pushfstring(L, "execution timeout"); WILL_LJMP(lua_error(L));