From e09101e8d92b0c0ef8674fbc791e309112ab7f1c Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 16 Oct 2018 17:37:12 +0200 Subject: [PATCH] BUILD: lua: silence some compiler warnings about potential null derefs (#2) Here we make sure that appctx is always taken from the unchecked value since we know it's an appctx, which explains why it's immediately dereferenced. A missing test was added to ensure that task_new() does not return a NULL. This may be backported to 1.8. --- src/hlua.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/hlua.c b/src/hlua.c index aaa884073..49aee746d 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -2361,7 +2361,7 @@ __LJMP static int hlua_socket_connect_yield(struct lua_State *L, int status, lua return 2; } - appctx = objt_appctx(s->si[0].end); + appctx = __objt_appctx(s->si[0].end); /* Check for connection established. */ if (appctx->ctx.hlua_cosocket.connected) { @@ -2473,7 +2473,7 @@ __LJMP static int hlua_socket_connect(struct lua_State *L) } hlua = hlua_gethlua(L); - appctx = objt_appctx(s->si[0].end); + appctx = __objt_appctx(s->si[0].end); /* inform the stream that we want to be notified whenever the * connection completes. @@ -5723,6 +5723,9 @@ static int hlua_register_task(lua_State *L) WILL_LJMP(luaL_error(L, "Lua out of memory error.")); task = task_new(MAX_THREADS_MASK); + if (!task) + WILL_LJMP(luaL_error(L, "Lua out of memory error.")); + task->context = hlua; task->process = hlua_process_task;