From 62b0d8f843abd5b589ddc26500b567ddf4031e14 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Tue, 15 Aug 2006 16:34:13 -0700 Subject: [PATCH] --- yaml --- r: 33405 b: refs/heads/master c: c7fa9d189e93877a1fa08ab00f230e0689125e45 h: refs/heads/master i: 33403: f02b275a6e5557fc97bc4a0003b285b7bc4d1106 v: v3 --- [refs] | 2 +- trunk/net/core/dev.c | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index a2b42b45556c..3031c37cb05d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d4274b51a5c8147b5341e15927368e75b632d297 +refs/heads/master: c7fa9d189e93877a1fa08ab00f230e0689125e45 diff --git a/trunk/net/core/dev.c b/trunk/net/core/dev.c index 9fe96cde3e19..d4a1ec3bded5 100644 --- a/trunk/net/core/dev.c +++ b/trunk/net/core/dev.c @@ -116,6 +116,7 @@ #include #include #include +#include /* * The list of packet types we will receive (as opposed to discard) @@ -632,14 +633,22 @@ struct net_device * dev_get_by_flags(unsigned short if_flags, unsigned short mas * @name: name string * * Network device names need to be valid file names to - * to allow sysfs to work + * to allow sysfs to work. We also disallow any kind of + * whitespace. */ int dev_valid_name(const char *name) { - return !(*name == '\0' - || !strcmp(name, ".") - || !strcmp(name, "..") - || strchr(name, '/')); + if (*name == '\0') + return 0; + if (!strcmp(name, ".") || !strcmp(name, "..")) + return 0; + + while (*name) { + if (*name == '/' || isspace(*name)) + return 0; + name++; + } + return 1; } /**