From a758a6cdb3f5fbb81ab1b9aa7ffbbc0f7940f10e Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Wed, 22 Aug 2018 11:22:56 +0200 Subject: Fix leak in build_argv() on line parsing error Signed-off-by: Stefano Brivio Signed-off-by: Jozsef Kadlecsik --- src/ipset.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ipset.c b/src/ipset.c index ce1b73f..14a351a 100644 --- a/src/ipset.c +++ b/src/ipset.c @@ -176,7 +176,7 @@ build_argv(char *buffer) if ((newargc + 1) == (int)(sizeof(newargv)/sizeof(char *))) { exit_error(PARAMETER_PROBLEM, "Line is too long to parse."); - return; + goto out; } switch (*tmp) { case '"': @@ -200,7 +200,7 @@ build_argv(char *buffer) } if (!*(tmp+1) && quoted) { exit_error(PARAMETER_PROBLEM, "Missing close quote!"); - return; + goto out; } if (!*arg) continue; @@ -209,6 +209,7 @@ build_argv(char *buffer) memset(arg, 0, strlen(arg) + 1); i = 0; } +out: free(arg); } -- cgit v1.2.3