]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: hlua: fix reference leak in core.register_task()
authorAurelien DARRAGON <adarragon@haproxy.com>
Mon, 13 Mar 2023 13:09:21 +0000 (14:09 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 5 Apr 2023 06:58:17 +0000 (08:58 +0200)
In core.register_task(): we take a reference to the function passed as
argument in order to push it in the new coroutine substack.
However, once pushed in the substack: the reference is not useful
anymore and should be cleared.
Currently, this is not the case in hlua_register_task().

Explicitly dropping the reference once the function is pushed to the
coroutine's stack to prevent any reference leak (which could contribute
to resource shortage)

This may be backported to every stable versions.
Please note that this commit depends on "MINOR: hlua: add simple hlua reference handling API"

src/hlua.c

index 355060886c8db8f303ae0bf066c385d8cb6ab765..dc9c5f96bc795a3a108062c3236dbf65388d43b2 100644 (file)
@@ -8719,6 +8719,9 @@ static int hlua_register_task(lua_State *L)
 
        /* Restore the function in the stack. */
        lua_rawgeti(hlua->T, LUA_REGISTRYINDEX, ref);
+       /* function ref not needed anymore since it was pushed to the substack */
+       hlua_unref(L, ref);
+
        hlua->nargs = 0;
 
        /* Schedule task. */