summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2018-08-22 11:22:56 +0200
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>2018-08-24 21:03:34 +0200
commita758a6cdb3f5fbb81ab1b9aa7ffbbc0f7940f10e (patch)
tree336537466c383b5a90a828fa5715b100c2442ac7
parent6d62c15f947ddb3d86346887a2616a621af515bb (diff)
Fix leak in build_argv() on line parsing error
Signed-off-by: Stefano Brivio <sbrivio@redhat.com> Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
-rw-r--r--src/ipset.c5
1 files changed, 3 insertions, 2 deletions
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);
}