Hi,

ESSIDs can technically include NULL characters.  Drivers should not be
adjusting the length of the ESSID before reporting it in their
SIOCGIWESSID handlers.  Breaks stuff like wpa_supplicant.  Note that ipw
drivers, which seem to currently be the "most correct", don't have this
problem.

Signed-off-by: Dan Williams <[EMAIL PROTECTED]>

--- a/drivers/net/wireless/atmel.c.ssid-fix     2006-01-12 13:31:22.000000000 
-0500
+++ b/drivers/net/wireless/atmel.c      2006-01-12 13:40:48.000000000 -0500
@@ -1680,11 +1680,11 @@
        if (priv->new_SSID_size != 0) {
                memcpy(extra, priv->new_SSID, priv->new_SSID_size);
                extra[priv->new_SSID_size] = '\0';
-               dwrq->length = priv->new_SSID_size + 1;
+               dwrq->length = priv->new_SSID_size;
        } else {
                memcpy(extra, priv->SSID, priv->SSID_size);
                extra[priv->SSID_size] = '\0';
-               dwrq->length = priv->SSID_size + 1;
+               dwrq->length = priv->SSID_size;
        }
 
        dwrq->flags = !priv->connect_to_any_BSS; /* active */
--- a/drivers/net/wireless/ray_cs.c.ssid-fix    2006-01-12 13:37:08.000000000 
-0500
+++ b/drivers/net/wireless/ray_cs.c     2006-01-12 13:37:26.000000000 -0500
@@ -1256,7 +1256,7 @@
        extra[IW_ESSID_MAX_SIZE] = '\0';
 
        /* Push it out ! */
-       dwrq->length = strlen(extra) + 1;
+       dwrq->length = strlen(extra);
        dwrq->flags = 1; /* active */
 
        return 0;
--- a/drivers/net/wireless/airo.c.ssid-fix      2006-01-12 13:30:30.000000000 
-0500
+++ b/drivers/net/wireless/airo.c       2006-01-12 13:41:15.000000000 -0500
@@ -5783,7 +5783,7 @@
        /* If none, we may want to get the one that was set */
 
        /* Push it out ! */
-       dwrq->length = status_rid.SSIDlen + 1;
+       dwrq->length = status_rid.SSIDlen;
        dwrq->flags = 1; /* active */
 
        return 0;
--- a/drivers/net/wireless/prism54/isl_ioctl.c.ssid-fix 2006-01-12 
13:36:36.000000000 -0500
+++ b/drivers/net/wireless/prism54/isl_ioctl.c  2006-01-12 13:36:57.000000000 
-0500
@@ -748,7 +748,7 @@
        if (essid->length) {
                dwrq->flags = 1;        /* set ESSID to ON for Wireless 
Extensions */
                /* if it is to big, trunk it */
-               dwrq->length = min(IW_ESSID_MAX_SIZE, essid->length + 1);
+               dwrq->length = min(IW_ESSID_MAX_SIZE, essid->length);
        } else {
                dwrq->flags = 0;
                dwrq->length = 0;
--- a/drivers/net/wireless/wavelan_cs.c.ssid-fix        2006-01-12 
13:38:22.000000000 -0500
+++ b/drivers/net/wireless/wavelan_cs.c 2006-01-12 13:38:26.000000000 -0500
@@ -2280,7 +2280,7 @@
        extra[IW_ESSID_MAX_SIZE] = '\0';
 
        /* Set the length */
-       wrqu->data.length = strlen(extra) + 1;
+       wrqu->data.length = strlen(extra);
 
        return 0;
 }


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to