From: Patrick McHardy Date: Fri, 12 Oct 2007 12:01:13 +0000 (+0200) Subject: Prevent renaming interfaces to empty string. X-Git-Tag: v2.6.23-071016~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca78b0e7d4042be7f7283d551d433b76da7f312b;p=thirdparty%2Fiproute2.git 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 --- diff --git a/ip/iplink.c b/ip/iplink.c index 4060845cc..8e0ed2ab9 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;