diff -urN oldtree/net/core/dev.c newtree/net/core/dev.c --- oldtree/net/core/dev.c 2006-08-18 15:01:22.000000000 -0400 +++ newtree/net/core/dev.c 2006-08-19 17:16:26.442219000 -0400 @@ -79,6 +79,7 @@ #include #include #include +#include #include #include #include @@ -636,11 +637,25 @@ */ int dev_valid_name(const char *name) { - return !(*name == '\0' - || strlen(name) >= IFNAMSIZ - || !strcmp(name, ".") - || !strcmp(name, "..") - || strchr(name, '/')); + if (*name == '\0') /* null string */ + return 0; + + if (*name == '.') { + if (name[1] == '\0') /* can't have . in directory */ + return 0; + if (name[1] == '.' && name[2] == '\0') + return 0; /* or .. */ + } + + /* Check for blanks and slash because it confuses sysfs interfaces */ + do { + if (*name == '/') + return 0; + if (isspace(*name)) + return 0; + } while (*++name); + + return 1; } /**