aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-08-15 16:34:13 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2006-08-17 16:29:56 -0700
commitc7fa9d189e93877a1fa08ab00f230e0689125e45 (patch)
tree26aab5d6e79f8c25c89a8a70fa18c9c29819b8f0
parentd4274b51a5c8147b5341e15927368e75b632d297 (diff)
[NET]: Disallow whitespace in network device names.
It causes way too much trouble and confusion in userspace. Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/core/dev.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 9fe96cde3e1..d4a1ec3bded 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -116,6 +116,7 @@
#include <linux/audit.h>
#include <linux/dmaengine.h>
#include <linux/err.h>
+#include <linux/ctype.h>
/*
* 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;
}
/**