From: Christopher Faulet Date: Thu, 7 May 2020 13:59:33 +0000 (+0200) Subject: BUG/MINOR: config: Make use_backend and use-server post-parsing less obscur X-Git-Tag: v2.2-dev8~109 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f82ea4ae4ca4a6fca70a6e874643db887a39f037;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/cfgparse.c b/src/cfgparse.c index e5c9219e11..5627fe2801 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); }