net: Check network device driver name
authorMichal Simek <monstr@monstr.eu>
Mon, 29 Aug 2011 23:30:13 +0000 (23:30 +0000)
committerWolfgang Denk <wd@denx.de>
Sun, 4 Sep 2011 21:29:39 +0000 (23:29 +0200)
If name is longer than allocated space NAMESIZE
mac address is rewritten which show error
message like:

Error message:
Warning: Xlltemac.87000000 MAC addresses don't match:
Address in SROM is         30:00:00:00:00:00
Address in environment is  00:0a:35:00:6a:04

NAMESIZE contains Driver name + zero terminated character.

Signed-off-by: Michal Simek <monstr@monstr.eu>
net/eth.c

index a34fe59383f38bc40a830c2628d191960c4396d3..c9b7e85e392ef18290156bba6da59c568ddcd80d 100644 (file)
--- a/net/eth.c
+++ b/net/eth.c
@@ -224,6 +224,14 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name,
 int eth_register(struct eth_device *dev)
 {
        struct eth_device *d;
+
+       size_t len = strlen(dev->name);
+       if (len >= NAMESIZE) {
+               printf("Network driver name is too long (%zu >= %zu): %s\n",
+                                               len, NAMESIZE, dev->name);
+               return -1;
+       }
+
        if (!eth_devices) {
                eth_current = eth_devices = dev;
                eth_current_changed();