[U-Boot] Device driver name - NET_MULTI

Hi,
I have met with the problem where I setup longer network driver name than was allocated space in eth_device structure.
That's why I think that registration code should check it.
What do you think?
Thanks, Michal

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
Signed-off-by: Michal Simek monstr@monstr.eu --- net/eth.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/net/eth.c b/net/eth.c index 3aad71f..54231b1 100644 --- a/net/eth.c +++ b/net/eth.c @@ -191,6 +191,13 @@ static void eth_current_changed(void) int eth_register(struct eth_device *dev) { struct eth_device *d; + + if (strlen(dev->name) > NAMESIZE) { + printf("Long(%d>%d) network driver name for %s\n", + strlen(dev->name), NAMESIZE, dev->name); + return 0; + } + if (!eth_devices) { eth_current = eth_devices = dev; eth_current_changed();

On Friday, August 26, 2011 08:52:40 Michal Simek wrote:
If name is longer than allocated space NAMESIZE mac address is rewritten which show error message like:
since you overflowed the buffer, who knows what could happen ...
- if (strlen(dev->name) > NAMESIZE) {
printf("Long(%d>%d) network driver name for %s\n",
strlen(dev->name), NAMESIZE, dev->name);
return 0;
- }
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; } -mike

Mike Frysinger wrote:
On Friday, August 26, 2011 08:52:40 Michal Simek wrote:
If name is longer than allocated space NAMESIZE mac address is rewritten which show error message like:
since you overflowed the buffer, who knows what could happen ...
- if (strlen(dev->name) > NAMESIZE) {
printf("Long(%d>%d) network driver name for %s\n",
strlen(dev->name), NAMESIZE, dev->name);
return 0;
- }
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; }
ok. I see it is 15 chars space + terminated characters.
Mike: Will you propose this patch or should I do it?
Thanks, Michal

On Monday, August 29, 2011 04:07:14 Michal Simek wrote:
Mike Frysinger wrote:
On Friday, August 26, 2011 08:52:40 Michal Simek wrote:
If name is longer than allocated space NAMESIZE mac address is rewritten which show error
message like:
since you overflowed the buffer, who knows what could happen ...
- if (strlen(dev->name) > NAMESIZE) {
printf("Long(%d>%d) network driver name for %s\n",
strlen(dev->name), NAMESIZE, dev->name);
return 0;
- }
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;
}
ok. I see it is 15 chars space + terminated characters.
Mike: Will you propose this patch or should I do it?
since you've got stuff pending here, best for you to do it :) -mike
participants (2)
-
Michal Simek
-
Mike Frysinger