mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
net: core: improve sanity checking in __dev_alloc_name
__dev_alloc_name is called from the public (and exported) dev_alloc_name(), so we don't have a guarantee that strlen(name) is at most IFNAMSIZ. If somebody manages to get __dev_alloc_name called with a % char beyond the 31st character, we'd be making a snprintf() call that will very easily crash the kernel (using an appropriate %p extension, we'll likely dereference some completely bogus pointer). In the normal case where strlen() is sane, we don't even save anything by limiting to IFNAMSIZ, so just use strchr(). Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
951b796695
commit
51f299dd94
@ -1064,7 +1064,7 @@ static int __dev_alloc_name(struct net *net, const char *name, char *buf)
|
||||
unsigned long *inuse;
|
||||
struct net_device *d;
|
||||
|
||||
p = strnchr(name, IFNAMSIZ-1, '%');
|
||||
p = strchr(name, '%');
|
||||
if (p) {
|
||||
/*
|
||||
* Verify the string as this thing may have come from
|
||||
|
Loading…
Reference in New Issue
Block a user