浏览代码

[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>
David S. Miller 19 年之前
父节点
当前提交
c7fa9d189e
共有 1 个文件被更改,包括 14 次插入5 次删除
  1. 14 5
      net/core/dev.c

+ 14 - 5
net/core/dev.c

@@ -116,6 +116,7 @@
 #include <linux/audit.h>
 #include <linux/audit.h>
 #include <linux/dmaengine.h>
 #include <linux/dmaengine.h>
 #include <linux/err.h>
 #include <linux/err.h>
+#include <linux/ctype.h>
 
 
 /*
 /*
  *	The list of packet types we will receive (as opposed to discard)
  *	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
  *	@name: name string
  *
  *
  *	Network device names need to be valid file names to
  *	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)
 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;
 }
 }
 
 
 /**
 /**