From 4b524124db9dc6e64b4e0f0882b5fc71d24970e0 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 11 Feb 2021 10:42:41 +0100 Subject: [PATCH] BUG/MINOR: tools: Fix a memory leak on error path in parse_dotted_uints() When an invalid character is found during parsing in parse_dotted_uints() function, the allocated array of uint must be released. This patch fixes a memory leak on error path during the configuration parsing. This patch should fix the issue #1106. It should be backported as far as 2.0. Note that, for 2.1 and 2.0, the function is in src/standard.c --- src/tools.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools.c b/src/tools.c index 2d40d8910..003fb5213 100644 --- a/src/tools.c +++ b/src/tools.c @@ -4810,8 +4810,10 @@ int parse_dotted_uints(const char *str, unsigned int **nums, size_t *sz) /* Expected characters after having read an uint: '\0' or '.', * if '.', must not be terminal. */ - if (*s != '\0'&& (*s++ != '.' || s == end)) + if (*s != '\0'&& (*s++ != '.' || s == end)) { + free(n); return 0; + } n = my_realloc2(n, (*sz + 1) * sizeof *n); if (!n)