From 3c682146aeff157ec354016befc3d8e21c982e9e Mon Sep 17 00:00:00 2001 From: WANG Cong Date: Fri, 5 Sep 2014 16:36:14 -0700 Subject: [PATCH] iplink: forbid negative ifindex and modifying ifindex Cc: Stephen Hemminger Signed-off-by: Cong Wang --- ip/iplink.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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) { -- 2.47.2