aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@osdl.org>2006-08-29 17:06:13 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 14:54:35 -0700
commitb6fe17d6cc5d570b72f8e4da351b593c5a680355 (patch)
tree7245b8476733a9066e453d53c5eb86d168db8b33 /net/core/dev.c
parent3696f625e2efa1f1b228b276788274e1eb86fcfa (diff)
downloadkernel_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.c6
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;
}