From ca78b0e7d4042be7f7283d551d433b76da7f312b Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Fri, 12 Oct 2007 14:01:13 +0200 Subject: [PATCH] Prevent renaming interfaces to empty string. Andreas Henriksson wrote: > From: Alexander Wirt > > > Signed-off-by: Andreas Henriksson > --- > ip/iplink.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/ip/iplink.c b/ip/iplink.c > index 4060845..da1f64e 100644 > --- a/ip/iplink.c > +++ b/ip/iplink.c > @@ -670,6 +670,10 @@ static int do_set(int argc, char **argv) > } > > if (newname && strcmp(dev, newname)) { > + if (strlen(newname) == 0) { > + printf("\"\" is not valid device identifier\n"); > + return -1; > + } Indentation fixed, same change for the non-ioctl case, use invarg. While I'm at it I also fixed the error message for "name too long", *argv is NULL at this point. Signed-off-by: Patrick McHardy --- ip/iplink.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ip/iplink.c b/ip/iplink.c index 4060845c..8e0ed2ab 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -336,8 +336,10 @@ static int iplink_modify(int cmd, unsigned int flags, int argc, char **argv) if (name) { len = strlen(name) + 1; + if (len == 1) + invarg("\"\" is not a valid device identifier\n", "name"); if (len > IFNAMSIZ) - invarg("\"name\" too long\n", *argv); + invarg("\"name\" too long\n", name); addattr_l(&req.n, sizeof(req), IFLA_IFNAME, name, len); } @@ -670,6 +672,8 @@ static int do_set(int argc, char **argv) } if (newname && strcmp(dev, newname)) { + if (strlen(newname) == 0) + invarg("\"\" is not a valid device identifier\n", "name"); if (do_changename(dev, newname) < 0) return -1; dev = newname;