mirror of
https://github.com/haproxy/haproxy.git
synced 2026-02-20 00:10:41 -05:00
BUG/MINOR: hlua: fix optional timeout argument index for AppletTCP:receive()
Baptiste reported that using the new optional timeout argument introduced in19e48f2("MINOR: hlua: add an optional timeout to AppletTCP:receive()") the following error would occur at some point: runtime error: file.lua:lineno: bad argument #-2 to 'receive' (number expected, got light userdata) from [C]: in method 'receive... In fact this is caused by exp_date being retrieved using relative index -1 instead of absolute index 3. Indeed, while using relative index is fine most of the time when we trust the stack, when combined with yielding the top of the stack when resuming from yielding is not necessarily the same as when the function was first called (ie: if some data was pushed to the stack in the yieldable function itself). As such, it is safer to use explicit index to access exp_date variable at position 3 on the stack. It was confirmed that doing so addresses the issue. No backport needed unless19e48f2is.
This commit is contained in:
parent
c880c32b16
commit
4651c4edd5
1 changed files with 1 additions and 1 deletions
|
|
@ -5321,7 +5321,7 @@ __LJMP static int hlua_applet_tcp_recv_yield(lua_State *L, int status, lua_KCont
|
|||
struct hlua_appctx *luactx = MAY_LJMP(hlua_checkapplet_tcp(L, 1));
|
||||
struct stconn *sc = appctx_sc(luactx->appctx);
|
||||
size_t len = MAY_LJMP(luaL_checkinteger(L, 2));
|
||||
int exp_date = MAY_LJMP(luaL_checkinteger(L, -1));
|
||||
int exp_date = MAY_LJMP(luaL_checkinteger(L, 3));
|
||||
int ret;
|
||||
const char *blk1;
|
||||
size_t len1;
|
||||
|
|
|
|||
Loading…
Reference in a new issue