]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
iptables: fix error reporting with wrong/missing arguments
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 19 Nov 2008 18:01:26 +0000 (19:01 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 19 Nov 2008 18:01:26 +0000 (19:01 +0100)
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 <pablo@netfilter.org>
ip6tables.c
iptables.c

index 293ba37f2e2a6c37aa08eb533612cae8b68b5b8e..3c45c0729e6ffbb63307ec20fea6fd853dcc4351 100644 (file)
@@ -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;
index 2c6b4dcc6a14c0e16407a3c584804913c7f58172..b75df871a4e2092b4b258175450c344f57500db6 100644 (file)
@@ -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;