]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: hlua_fcn/queue: fix reference leak
authorAurelien DARRAGON <adarragon@haproxy.com>
Wed, 10 May 2023 17:47:08 +0000 (19:47 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 11 May 2023 07:23:14 +0000 (09:23 +0200)
When pushing a lua object through lua Queue class, a new reference is
created from the object so that it can be safely restored when needed.

Likewise, when popping an object from lua Queue class, the object is
restored at the top of the stack via its reference id.

However, once the object is restored the related queue entry is removed,
thus the object reference must be dropped to prevent reference leak.

src/hlua_fcn.c

index 27396144eec27aecab9222201900c94cd209f182..3347211d059205e5ad5d01e103ad8b2d8d848c03 100644 (file)
@@ -600,6 +600,11 @@ static int _hlua_queue_pop(lua_State *L, struct hlua_queue *queue)
        /* push lua obj on the stack */
        hlua_pushref(L, item->ref);
 
+       /* obj ref should be released right away since it was pushed
+        * on the stack and will not be used anymore
+        */
+       hlua_unref(L, item->ref);
+
        /* free the queue item */
        pool_free(pool_head_hlua_queue, item);