[NET] netdev: Check name length
authorStephen Hemminger <shemminger@osdl.org>
Wed, 30 Aug 2006 00:06:13 +0000 (17:06 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Fri, 22 Sep 2006 21:54:35 +0000 (14:54 -0700)
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>
net/core/dev.c

index fc82f6f..14de297 100644 (file)
@@ -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;
        }