From: Pablo Neira Ayuso Date: Wed, 19 Nov 2008 18:01:26 +0000 (+0100) Subject: iptables: fix error reporting with wrong/missing arguments X-Git-Tag: v1.4.3~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e6b7d3171988cf745d4d99006459bcea99e6e34;p=thirdparty%2Fiptables.git iptables: fix error reporting with wrong/missing arguments This patch fixes wrong error reporting when arguments are missing: # iptables -I INPUT -m state --state iptables v1.4.2-rc1: Unknown arg `(null)' Try `iptables -h' or 'iptables --help' for more information. or wrong: # iptables -I INPUT -m state --xyz iptables v1.4.2-rc1: Unknown arg `(null)' Try `iptables -h' or 'iptables --help' for more information. Signed-off-by: Pablo Neira Ayuso --- diff --git a/ip6tables.c b/ip6tables.c index 293ba37f..3c45c072 100644 --- a/ip6tables.c +++ b/ip6tables.c @@ -1888,9 +1888,26 @@ int do_command6(int argc, char *argv[], char **table, struct ip6tc_handle **hand continue; } - if (!m) + if (!m) { + if (c == '?') { + if (optopt) { + exit_error( + PARAMETER_PROBLEM, + "option `%s' " + "requires an " + "argument", + argv[optind-1]); + } else { + exit_error( + PARAMETER_PROBLEM, + "unknown option " + "`%s'", + argv[optind-1]); + } + } exit_error(PARAMETER_PROBLEM, "Unknown arg `%s'", optarg); + } } } invert = FALSE; diff --git a/iptables.c b/iptables.c index 2c6b4dcc..b75df871 100644 --- a/iptables.c +++ b/iptables.c @@ -1909,9 +1909,26 @@ int do_command(int argc, char *argv[], char **table, struct iptc_handle **handle optind--; continue; } - if (!m) + if (!m) { + if (c == '?') { + if (optopt) { + exit_error( + PARAMETER_PROBLEM, + "option `%s' " + "requires an " + "argument", + argv[optind-1]); + } else { + exit_error( + PARAMETER_PROBLEM, + "unknown option " + "`%s'", + argv[optind-1]); + } + } exit_error(PARAMETER_PROBLEM, "Unknown arg `%s'", optarg); + } } } invert = FALSE;