Device names that match "help" or a prefix thereof should be allowed anywhere
a device name can be used. Note that a suitable keyword ("dev" or "name", the
latter for "ip tunnel") has to be used in these cases to resolve ambiguities.

Signed-off-by: Christoph Schulz <deve...@kristov.de>
Reported-by: Leonhard Preis <leonh...@pre.is>
Reported-by: Wilhelm Wijkander <li...@0x5e.se>
---
 ip/ip6tunnel.c | 2 +-
 ip/ipaddress.c | 2 +-
 ip/iplink.c    | 6 ++----
 ip/ipmaddr.c   | 2 +-
 4 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/ip/ip6tunnel.c b/ip/ip6tunnel.c
index 62a8240..9884efd 100644
--- a/ip/ip6tunnel.c
+++ b/ip/ip6tunnel.c
@@ -287,7 +287,7 @@ static int parse_args(int argc, char **argv, int cmd, 
struct ip6_tnl_parm2 *p)
                        if (strcmp(*argv, "name") == 0) {
                                NEXT_ARG();
                        }
-                       if (matches(*argv, "help") == 0)
+                       else if (matches(*argv, "help") == 0)
                                usage();
                        if (p->name[0])
                                duparg2("name", *argv);
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 2aa5fbf..4c97b4a 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -1561,7 +1561,7 @@ static int ipaddr_list_flush_or_save(int argc, char 
**argv, int action)
                        if (strcmp(*argv, "dev") == 0) {
                                NEXT_ARG();
                        }
-                       if (matches(*argv, "help") == 0)
+                       else if (matches(*argv, "help") == 0)
                                usage();
                        if (filter_dev)
                                duparg2("dev", *argv);
diff --git a/ip/iplink.c b/ip/iplink.c
index 97f46cd..6f840cf 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
@@ -649,8 +649,7 @@ int iplink_parse(int argc, char **argv, struct iplink_req 
*req,
                } else {
                        if (strcmp(*argv, "dev") == 0)
                                NEXT_ARG();
-
-                       if (matches(*argv, "help") == 0)
+                       else if (matches(*argv, "help") == 0)
                                usage();
                        if (*dev)
                                duparg2("dev", *argv);
@@ -1148,8 +1147,7 @@ static int do_set(int argc, char **argv)
                } else {
                        if (strcmp(*argv, "dev") == 0)
                                NEXT_ARG();
-
-                       if (matches(*argv, "help") == 0)
+                       else if (matches(*argv, "help") == 0)
                                usage();
 
                        if (dev)
diff --git a/ip/ipmaddr.c b/ip/ipmaddr.c
index a77a18f..cbd6d11 100644
--- a/ip/ipmaddr.c
+++ b/ip/ipmaddr.c
@@ -257,7 +257,7 @@ static int multiaddr_list(int argc, char **argv)
                        if (strcmp(*argv, "dev") == 0) {
                                NEXT_ARG();
                        }
-                       if (matches(*argv, "help") == 0)
+                       else if (matches(*argv, "help") == 0)
                                usage();
                        if (filter.dev)
                                duparg2("dev", *argv);
-- 
2.4.6

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to