diff options
author | Stephen Hemminger <shemminger@osdl.org> | 2006-08-29 17:06:13 -0700 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 14:54:35 -0700 |
commit | b6fe17d6cc5d570b72f8e4da351b593c5a680355 (patch) | |
tree | 7245b8476733a9066e453d53c5eb86d168db8b33 /net/core/dev.c | |
parent | 3696f625e2efa1f1b228b276788274e1eb86fcfa (diff) | |
download | kernel_samsung_espresso10-b6fe17d6cc5d570b72f8e4da351b593c5a680355.zip kernel_samsung_espresso10-b6fe17d6cc5d570b72f8e4da351b593c5a680355.tar.gz kernel_samsung_espresso10-b6fe17d6cc5d570b72f8e4da351b593c5a680355.tar.bz2 |
[NET] netdev: Check name length
Some improvements to robust name interface. These API's are safe
now by convention, but it is worth providing some safety checks
against future bugs.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index fc82f6f..14de297 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -640,6 +640,8 @@ int dev_valid_name(const char *name) { if (*name == '\0') return 0; + if (strlen(name) >= IFNAMSIZ) + return 0; if (!strcmp(name, ".") || !strcmp(name, "..")) return 0; @@ -3191,13 +3193,15 @@ struct net_device *alloc_netdev(int sizeof_priv, const char *name, struct net_device *dev; int alloc_size; + BUG_ON(strlen(name) >= sizeof(dev->name)); + /* ensure 32-byte alignment of both the device and private area */ alloc_size = (sizeof(*dev) + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST; alloc_size += sizeof_priv + NETDEV_ALIGN_CONST; p = kzalloc(alloc_size, GFP_KERNEL); if (!p) { - printk(KERN_ERR "alloc_dev: Unable to allocate device.\n"); + printk(KERN_ERR "alloc_netdev: Unable to allocate device.\n"); return NULL; } |