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
(cherry picked from commit 4b524124db9dc6e64b4e0f0882b5fc71d24970e0)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 9027d3a6a34a9254bf4c3d642ac1fa886d5c4f23)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 94556d39f1b6d5e4f4ad8715a7b47104a0c636da)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 498d36db3fadd987ec78e5660d15a85452b6e4d4)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/standard.c b/src/standard.c
index 0c8a183..57d0cd7 100644
--- a/src/standard.c
+++ b/src/standard.c
@@ -4348,8 +4348,10 @@
/* 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)