From: Jakub Kicinski Date: Mon, 31 Jul 2023 16:19:20 +0000 (-0700) Subject: ip: error out if iplink does not consume all options X-Git-Tag: v6.5.0~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=84ffffeb0a2ff69e36bd972d57699f9e3bb29a48;p=thirdparty%2Fiproute2.git ip: error out if iplink does not consume all options dummy does not define .parse_opt, which make ip ignore all trailing arguments, for example: # ip link add type dummy a b c d e f name cheese will work just fine (and won't call the device "cheese"). Error out in this case with a clear error message: # ip link add type dummy a b c d e f name cheese Garbage instead of arguments "a ...". Try "ip link help". Signed-off-by: Jakub Kicinski Signed-off-by: Stephen Hemminger --- diff --git a/ip/iplink.c b/ip/iplink.c index 6c5d13d53..9a548dd35 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -1112,13 +1112,12 @@ static int iplink_modify(int cmd, unsigned int flags, int argc, char **argv) argc -= ret; argv += ret; - if (lu && argc) { + if (lu && lu->parse_opt && argc) { struct rtattr *data; data = addattr_nest(&req.n, sizeof(req), iflatype); - if (lu->parse_opt && - lu->parse_opt(lu, argc, argv, &req.n)) + if (lu->parse_opt(lu, argc, argv, &req.n)) return -1; addattr_nest_end(&req.n, data);