]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: tools: Fix a memory leak on error path in parse_dotted_uints()
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 11 Feb 2021 09:42:41 +0000 (10:42 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 11 Feb 2021 10:48:36 +0000 (11:48 +0100)
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

index 2d40d8910f66284361dfee3912ca2f09c1acb3fd..003fb5213553951b45a065ac219d01cf38b347d1 100644 (file)
@@ -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)