]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: logs: fix http-client's log srv initialization
authorWilly Tarreau <w@1wt.eu>
Thu, 21 Apr 2022 12:14:28 +0000 (14:14 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 22 Apr 2022 07:40:44 +0000 (09:40 +0200)
As anticipated in commit 211ea252d ("BUG/MINOR: logs: fix logsrv leaks
on clean exit"), there were indeed other corner cases that were not
properly covered. Setting the http client's ring_name to NULL make the
sink lookup crash on startup in sink_find () with a config as simple as:

    global
        log ring@buf0 local0

The fields must be properly initialized (both config file name and
the ring_name). This only needs to be backported if/when the commit
above is backported.

src/http_client.c

index f1e5345a65ba1f0c03771c612cca6d4eb1a0fe9f..6bf28d03b9b46c205b2e3795fb1fd25b36213d9a 100644 (file)
@@ -1089,9 +1089,8 @@ static int httpclient_cfg_postparser()
                memcpy(node, logsrv, sizeof(*node));
                LIST_INIT(&node->list);
                LIST_APPEND(&curproxy->logsrvs, &node->list);
-               node->ring_name = NULL;
-               node->conf.file = NULL;
-               node->conf.line = 0;
+               node->ring_name = logsrv->ring_name ? strdup(logsrv->ring_name) : NULL;
+               node->conf.file = logsrv->conf.file ? strdup(logsrv->conf.file) : NULL;
        }
        if (curproxy->conf.logformat_string) {
                curproxy->conf.args.ctx = ARGC_LOG;