From: Vsevolod Stakhov Date: Sun, 21 Dec 2025 22:23:36 +0000 (+0000) Subject: [Fix] Use rspamd_lua_task_push in all task creation paths X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=282ce533807d76f665ca649679ee0933dddf1fde;p=thirdparty%2Frspamd.git [Fix] Use rspamd_lua_task_push in all task creation paths Fix load_from_file, load_from_string, and create to use rspamd_lua_task_push instead of directly creating userdata with raw task pointer. --- diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c index 2cee364c7e..613d7f080d 100644 --- a/src/lua/lua_task.c +++ b/src/lua/lua_task.c @@ -1824,7 +1824,7 @@ static int lua_task_load_from_file(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_task *task = NULL, **ptask; + struct rspamd_task *task = NULL; const char *fname, *err = NULL; struct rspamd_config *cfg = NULL; gboolean res = FALSE, new_task = FALSE; @@ -1920,9 +1920,7 @@ lua_task_load_from_file(lua_State *L) lua_pushboolean(L, res); if (res && new_task) { - ptask = lua_newuserdata(L, sizeof(*ptask)); - *ptask = task; - rspamd_lua_setclass(L, rspamd_task_classname, -1); + rspamd_lua_task_push(L, task); return 2; } @@ -1945,7 +1943,7 @@ static int lua_task_load_from_string(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_task *task = NULL, **ptask; + struct rspamd_task *task = NULL; const char *str_message; gsize message_len = 0; struct rspamd_config *cfg = NULL; @@ -1991,9 +1989,7 @@ lua_task_load_from_string(lua_State *L) lua_pushboolean(L, true); if (new_task) { - ptask = lua_newuserdata(L, sizeof(*ptask)); - *ptask = task; - rspamd_lua_setclass(L, rspamd_task_classname, -1); + rspamd_lua_task_push(L, task); return 2; } @@ -2006,7 +2002,7 @@ static int lua_task_create(lua_State *L) { LUA_TRACE_POINT; - struct rspamd_task *task = NULL, **ptask; + struct rspamd_task *task = NULL; struct rspamd_config *cfg = NULL; struct ev_loop *ev_base = NULL; @@ -2034,9 +2030,7 @@ lua_task_create(lua_State *L) task = rspamd_task_new(NULL, cfg, NULL, NULL, ev_base, FALSE); task->flags |= RSPAMD_TASK_FLAG_EMPTY; - ptask = lua_newuserdata(L, sizeof(*ptask)); - *ptask = task; - rspamd_lua_setclass(L, rspamd_task_classname, -1); + rspamd_lua_task_push(L, task); return 1; }