hostap: fixup strlen() math
authorDan Carpenter <error27@gmail.com>
Sat, 10 Jul 2010 22:10:42 +0000 (00:10 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 12 Jul 2010 20:05:32 +0000 (16:05 -0400)
In hostap_add_interface() we do:
sprintf(dev->name, "%s%s", prefix, name);

dev->name has IFNAMSIZ (16) characters.
prefix is local->dev->name.
name is "wds%d"

strlen() returns the number of characters in the string not counting the
NULL so if we have a string with 11 characters we get "12345678901wds%d"
which is 16 characters and a NULL so we're past the end of the array.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/hostap/hostap_main.c

index eaee84b55887b7306491151b2cd0db163158dfb1..25a2722c8a986ce35a8a37a9076814095cc70ee3 100644 (file)
@@ -186,7 +186,7 @@ int prism2_wds_add(local_info_t *local, u8 *remote_addr,
                return -ENOBUFS;
 
        /* verify that there is room for wds# postfix in the interface name */
-       if (strlen(local->dev->name) > IFNAMSIZ - 5) {
+       if (strlen(local->dev->name) >= IFNAMSIZ - 5) {
                printk(KERN_DEBUG "'%s' too long base device name\n",
                       local->dev->name);
                return -EINVAL;