diff mbox

[U-Boot,RFC] net: Check network device driver name

Message ID 1314363160-18362-2-git-send-email-monstr@monstr.eu
State Changes Requested
Headers show

Commit Message

Michal Simek Aug. 26, 2011, 12:52 p.m. UTC
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(-)

Comments

Mike Frysinger Aug. 26, 2011, 7:52 p.m. UTC | #1
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
Michal Simek Aug. 29, 2011, 8:07 a.m. UTC | #2
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
Mike Frysinger Aug. 29, 2011, 6:17 p.m. UTC | #3
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
diff mbox

Patch

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();