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