From: Jo-Philipp Wich Date: Thu, 23 May 2013 12:38:56 +0000 (+0200) Subject: Don't leak memory when encountering unknown match or target X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=commitdiff_plain;h=a93d95470803e9026c725fc7081ac8a06191ea6a Don't leak memory when encountering unknown match or target --- diff --git a/iptables.c b/iptables.c index f39ed1e..cea3fcd 100644 --- a/iptables.c +++ b/iptables.c @@ -1162,7 +1162,7 @@ fw3_ipt_rule_append(struct fw3_ipt_rule *r, const char *fmt, ...) if (!em) { fprintf(stderr, "fw3_ipt_rule_append(): Can't find match '%s'\n", optarg); - return; + goto free; } init_match(r, em, true); @@ -1174,7 +1174,7 @@ fw3_ipt_rule_append(struct fw3_ipt_rule *r, const char *fmt, ...) if (!et) { fprintf(stderr, "fw3_ipt_rule_append(): Can't find target '%s'\n", optarg); - return; + goto free; } break; @@ -1263,6 +1263,7 @@ fw3_ipt_rule_append(struct fw3_ipt_rule *r, const char *fmt, ...) free(e); } +free: for (i = 1; i < r->argc; i++) free(r->argv[i]);