From 7a900009ee71e9096814dd71333683bbeb172816 Mon Sep 17 00:00:00 2001 From: kaber Date: Sat, 18 Sep 2004 17:43:36 +0000 Subject: Print error when '!' is used with multiport. Based on patch by Phil Oester. --- extensions/libip6t_multiport.c | 7 +++++++ extensions/libipt_mport.c | 7 +++++++ extensions/libipt_multiport.c | 7 +++++++ 3 files changed, 21 insertions(+) (limited to 'extensions') diff --git a/extensions/libip6t_multiport.c b/extensions/libip6t_multiport.c index dc5bbf4..2dc406d 100644 --- a/extensions/libip6t_multiport.c +++ b/extensions/libip6t_multiport.c @@ -112,6 +112,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, switch (c) { case '1': + check_inverse(argv[optind-1], &invert, &optind, 0); proto = check_proto(entry); multiinfo->count = parse_multi_ports(argv[optind-1], multiinfo->ports, proto); @@ -120,6 +121,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '2': + check_inverse(argv[optind-1], &invert, &optind, 0); proto = check_proto(entry); multiinfo->count = parse_multi_ports(argv[optind-1], multiinfo->ports, proto); @@ -128,6 +130,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '3': + check_inverse(argv[optind-1], &invert, &optind, 0); proto = check_proto(entry); multiinfo->count = parse_multi_ports(argv[optind-1], multiinfo->ports, proto); @@ -139,6 +142,10 @@ parse(int c, char **argv, int invert, unsigned int *flags, return 0; } + if (invert) + exit_error(PARAMETER_PROBLEM, + "multiport does not support invert"); + if (*flags) exit_error(PARAMETER_PROBLEM, "multiport can only have one option"); diff --git a/extensions/libipt_mport.c b/extensions/libipt_mport.c index 2ae61ff..28568db 100644 --- a/extensions/libipt_mport.c +++ b/extensions/libipt_mport.c @@ -136,6 +136,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, switch (c) { case '1': + check_inverse(argv[optind-1], &invert, &optind, 0); proto = check_proto(entry); parse_multi_ports(argv[optind-1], minfo, proto); minfo->flags = IPT_MPORT_SOURCE; @@ -143,6 +144,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '2': + check_inverse(argv[optind-1], &invert, &optind, 0); proto = check_proto(entry); parse_multi_ports(argv[optind-1], minfo, proto); minfo->flags = IPT_MPORT_DESTINATION; @@ -150,6 +152,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '3': + check_inverse(argv[optind-1], &invert, &optind, 0); proto = check_proto(entry); parse_multi_ports(argv[optind-1], minfo, proto); minfo->flags = IPT_MPORT_EITHER; @@ -160,6 +163,10 @@ parse(int c, char **argv, int invert, unsigned int *flags, return 0; } + if (invert) + exit_error(PARAMETER_PROBLEM, + "multiport does not support invert"); + if (*flags) exit_error(PARAMETER_PROBLEM, "multiport can only have one option"); diff --git a/extensions/libipt_multiport.c b/extensions/libipt_multiport.c index c9a98b3..efcb58e 100644 --- a/extensions/libipt_multiport.c +++ b/extensions/libipt_multiport.c @@ -112,6 +112,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, switch (c) { case '1': + check_inverse(argv[optind-1], &invert, &optind, 0); proto = check_proto(entry); multiinfo->count = parse_multi_ports(argv[optind-1], multiinfo->ports, proto); @@ -120,6 +121,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '2': + check_inverse(argv[optind-1], &invert, &optind, 0); proto = check_proto(entry); multiinfo->count = parse_multi_ports(argv[optind-1], multiinfo->ports, proto); @@ -128,6 +130,7 @@ parse(int c, char **argv, int invert, unsigned int *flags, break; case '3': + check_inverse(argv[optind-1], &invert, &optind, 0); proto = check_proto(entry); multiinfo->count = parse_multi_ports(argv[optind-1], multiinfo->ports, proto); @@ -139,6 +142,10 @@ parse(int c, char **argv, int invert, unsigned int *flags, return 0; } + if (invert) + exit_error(PARAMETER_PROBLEM, + "multiport does not support invert"); + if (*flags) exit_error(PARAMETER_PROBLEM, "multiport can only have one option"); -- cgit v1.2.3