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