]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: logs: Only attempt to free startup_logs once.
authorOlivier Houchard <ohouchard@haproxy.com>
Thu, 7 Mar 2019 13:19:24 +0000 (14:19 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 7 Mar 2019 13:59:34 +0000 (14:59 +0100)
deinit_log_buffers() can be called once per thread, however startup_logs
is common to all threads. So only attempt to free it once.

This should be backported to 1.9 and 1.8.

src/log.c

index a4cedcc5af2f5c5b4fe924748833919e68fc0077..826f50e45ecbf0d1cc6190adbee9df55ec59fd41 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -1692,11 +1692,15 @@ int init_log_buffers()
 /* Deinitialize log buffers used for syslog messages */
 void deinit_log_buffers()
 {
+       void *tmp_startup_logs;
+
        free(logheader);
        free(logheader_rfc5424);
        free(logline);
        free(logline_rfc5424);
-       free(startup_logs);
+       tmp_startup_logs = HA_ATOMIC_XCHG(&startup_logs, NULL);
+       free(tmp_startup_logs);
+
        logheader         = NULL;
        logheader_rfc5424 = NULL;
        logline           = NULL;