diff options
author | Harald Welte <laforge@gnumonks.org> | 2002-03-14 11:35:58 +0000 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2002-03-14 11:35:58 +0000 |
commit | b77f1dafb9f35752bb9685323bcacb32a0e6ddc5 (patch) | |
tree | 32821b41042796995881aabc74f6821e7603b288 /extensions/libipt_conntrack.c | |
parent | dffa8ddb43ca2d5bfe7344daea2f6e80c5adaa58 (diff) |
Fix 'iptables -p !' bug (segfault when `!' used without argument)
Diffstat (limited to 'extensions/libipt_conntrack.c')
-rw-r--r-- | extensions/libipt_conntrack.c | 24 |
1 files changed, 8 insertions, 16 deletions
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) { |