]>
Commit | Line | Data |
---|---|---|
9e5a6bf4 | 1 | diff -Nru a/net/core/dev.c b/net/core/dev.c |
2 | --- a/net/core/dev.c Tue Jan 13 14:20:51 2004 | |
3 | +++ b/net/core/dev.c Tue Jan 13 14:20:51 2004 | |
4 | @@ -621,6 +621,21 @@ | |
5 | } | |
6 | ||
7 | /** | |
8 | + * dev_valid_name - check if name is okay for network device | |
9 | + * @name: name string | |
10 | + * | |
11 | + * Network device names need to be valid file names to | |
12 | + * to allow sysfs to work | |
13 | + */ | |
14 | +int dev_valid_name(const char *name) | |
15 | +{ | |
16 | + return !(*name == '\0' | |
17 | + || !strcmp(name, ".") | |
18 | + || !strcmp(name, "..") | |
19 | + || strchr(name, '/')); | |
20 | +} | |
21 | + | |
22 | +/** | |
23 | * dev_alloc_name - allocate a name for a device | |
24 | * @dev: device | |
25 | * @name: name format string | |
9e5a6bf4 | 26 | @@ -2685,6 +2723,11 @@ |
27 | ret = -EIO; | |
28 | goto out_err; | |
29 | } | |
30 | + } | |
31 | + | |
32 | + if (!dev_valid_name(dev->name)) { | |
33 | + ret = -EINVAL; | |
34 | + goto out_err; | |
35 | } | |
36 | ||
37 | dev->ifindex = dev_new_index(); | |
b3663673 | 38 | diff -Nru a/net/core/dev.c b/net/core/dev.c |
39 | --- a/net/core/dev.c Wed Jan 14 16:09:02 2004 | |
40 | +++ b/net/core/dev.c Wed Jan 14 16:09:02 2004 | |
41 | @@ -718,7 +718,7 @@ | |
42 | ||
43 | if (strchr(newname, '%')) { | |
44 | int err = dev_alloc_name(dev, newname); | |
45 | - if (err) | |
46 | + if (err < 0) | |
47 | return err; | |
48 | strcpy(newname, dev->name); | |
49 | } |