]> git.ipfire.org Git - thirdparty/ipset.git/commitdiff
Fix leak in build_argv() on line parsing error
authorStefano Brivio <sbrivio@redhat.com>
Wed, 22 Aug 2018 09:22:56 +0000 (11:22 +0200)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Fri, 24 Aug 2018 19:03:34 +0000 (21:03 +0200)
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
src/ipset.c

index ce1b73f51633cc0e093ae9fea8752946749d0131..14a351a125f24162fae6c408fde4536bb643d5ae 100644 (file)
@@ -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);
 }