From f82ea4ae4ca4a6fca70a6e874643db887a39f037 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 7 May 2020 15:59:33 +0200 Subject: [PATCH] BUG/MINOR: config: Make use_backend and use-server post-parsing less obscur During use_backend and use-server post-parsing, if the log-format string used to specify the backend or the server is just a single string, the log-format string (a list, internally) is replaced by the string itself. Because the field is an union, the list is not emptied according to the rules of art. The element, when released, is not removed from the list. There is no bug, but it is clearly not obvious and error prone. This patch should fix #544. The fix for the use_backend post-parsing may be backported to all stable releases. use-server is static in 2.1 and prior. --- src/cfgparse.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/cfgparse.c b/src/cfgparse.c index e5c9219e1..5627fe280 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -2654,7 +2654,10 @@ int check_config_validity() free(pxname); continue; } - /* simple string: free the expression and fall back to static rule */ + /* Only one element in the list, a simple string: free the expression and + * fall back to static rule + */ + LIST_DEL(&node->list); free(node->arg); free(node); } @@ -2715,6 +2718,10 @@ int check_config_validity() free(server_name); continue; } + /* Only one element in the list, a simple string: free the expression and + * fall back to static rule + */ + LIST_DEL(&node->list); free(node->arg); free(node); }