]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: lua/httpclient: missing free in hlua_httpclient_send()
authorAurelien DARRAGON <adarragon@haproxy.com>
Thu, 9 Feb 2023 14:26:25 +0000 (15:26 +0100)
committerWilliam Lallemand <wlallemand@haproxy.org>
Wed, 22 Feb 2023 10:29:59 +0000 (11:29 +0100)
In hlua_httpclient_send(), we replace hc->req.url with a new url.
But we forgot to free the original url that was allocated in
hlua_httpclient_new() or in the previous httpclient_send() call.

Because of this, each httpclient request performed under lua scripts would
result in a small leak. When stress-testing a lua action which uses httpclient,
the leak is clearly visible since we're leaking severals Mbytes per minute.

This bug was discovered by chance when trying to reproduce GH issue #2037.

It must be backported up to 2.5

src/hlua.c

index 34672267537fa3de262f5f8380633058c0f48872..184c1e78087637d5921660b98d34f39adaa1bfee 100644 (file)
@@ -7409,6 +7409,7 @@ __LJMP static int hlua_httpclient_send(lua_State *L, enum http_meth_t meth)
 
        hlua_hc->sent = 0;
 
+       istfree(&hlua_hc->hc->req.url);
        hlua_hc->hc->req.url = istdup(ist(url_str));
        hlua_hc->hc->req.meth = meth;