From: WANG Cong Date: Fri, 5 Sep 2014 23:36:14 +0000 (-0700) Subject: iplink: forbid negative ifindex and modifying ifindex X-Git-Tag: v3.17.0~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c682146aeff;p=thirdparty%2Fiproute2.git iplink: forbid negative ifindex and modifying ifindex Cc: Stephen Hemminger Signed-off-by: Cong Wang --- diff --git a/ip/iplink.c b/ip/iplink.c index ea06871b7..a8a19dd67 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -400,6 +400,8 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req, } else if (strcmp(*argv, "index") == 0) { NEXT_ARG(); *index = atoi(*argv); + if (*index < 0) + invarg("Invalid \"index\" value", *argv); } else if (matches(*argv, "link") == 0) { NEXT_ARG(); *link = *argv; @@ -607,7 +609,7 @@ static int iplink_modify(int cmd, unsigned int flags, int argc, char **argv) char *name = NULL; char *link = NULL; char *type = NULL; - int index = 0; + int index = -1; int group; struct link_util *lu = NULL; struct iplink_req req; @@ -658,6 +660,11 @@ static int iplink_modify(int cmd, unsigned int flags, int argc, char **argv) "argument is required.\n"); exit(-1); } + if (cmd == RTM_NEWLINK && index != -1) { + fprintf(stderr, "index can be used only when " + "creating devices.\n"); + exit(-1); + } req.i.ifi_index = ll_name_to_index(dev); if (req.i.ifi_index == 0) {