From b77f1dafb9f35752bb9685323bcacb32a0e6ddc5 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 14 Mar 2002 11:35:58 +0000 Subject: Fix 'iptables -p !' bug (segfault when `!' used without argument) --- extensions/libipt_conntrack.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) (limited to 'extensions/libipt_conntrack.c') diff --git a/extensions/libipt_conntrack.c b/extensions/libipt_conntrack.c index 9b639391..b15ade0c 100644 --- a/extensions/libipt_conntrack.c +++ b/extensions/libipt_conntrack.c @@ -179,8 +179,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, switch (c) { case '1': - if (check_inverse(optarg, &invert)) - optind++; + check_inverse(optarg, &invert, &optind, 0); parse_states(argv[optind-1], sinfo); if (invert) { @@ -190,8 +189,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '2': - if (check_inverse(optarg, &invert)) - optind++; + check_inverse(optarg, &invert, &optdind, 0); if(invert) sinfo->invflags |= IPT_CONNTRACK_PROTO; @@ -212,8 +210,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '3': - if (check_inverse(optarg, &invert)) - optind++; + check_inverse(optarg, &invert, &optind, 9); if (invert) sinfo->invflags |= IPT_CONNTRACK_ORIGSRC; @@ -233,8 +230,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '4': - if (check_inverse(optarg, &invert)) - optind++; + check_inverse(optarg, &invert, &optind, 0); if (invert) sinfo->invflags |= IPT_CONNTRACK_ORIGDST; @@ -254,8 +250,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '5': - if (check_inverse(optarg, &invert)) - optind++; + check_inverse(optarg, &invert, &optind, 0); if (invert) sinfo->invflags |= IPT_CONNTRACK_REPLSRC; @@ -275,8 +270,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '6': - if (check_inverse(optarg, &invert)) - optind++; + check_inverse(optarg, &invert, &optind, 0); if (invert) sinfo->invflags |= IPT_CONNTRACK_REPLDST; @@ -296,8 +290,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '7': - if (check_inverse(optarg, &invert)) - optind++; + check_inverse(optarg, &invert, &optind, 0); parse_statuses(argv[optind-1], sinfo); if (invert) { @@ -307,8 +300,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '8': - if (check_inverse(optarg, &invert)) - optind++; + check_inverse(optarg, &invert, &optind, 0); parse_expires(argv[optind-1], sinfo); if (invert) { -- cgit v1.2.3