[PATCH] wpa_supplicant: Work around odd driver-reported ssid lengths

Dan Williams dcbw at redhat.com
Thu Jan 12 11:30:37 EST 2006


At least the atmel and airo drivers do odd, technically incorrect,
things in their SIOCGIWESSID:

        memcpy(extra, status_rid.SSID, status_rid.SSIDlen);
        extra[status_rid.SSIDlen] = '\0';
        /* If none, we may want to get the one that was set */

        /* Push it out ! */
        dwrq->length = status_rid.SSIDlen + 1;

Atmel does roughly the same thing.  They both append a '\0' to the end,
and push that to userspace.  I'm unsure whether or not NULL is a legal
character in an SSID, but these drivers do it.

wpa_supplicant does not handle it; in the wpa_supplicant_get_ssid()
function, it compares the internal SSID from the config file to the
value returned by the driver.  If the lengths of the two do not match,
no wpa_ssid structure is returned.  In this odd case, then lengths do
not match, but the AP is clearly the correct AP to use.

Patch attached.  It checks if the last byte of the SSID reported by the
driver is NULL, and if so, decrements the driver-reported length.  I
think this is an acceptable solution.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: wpa_supplicant-driver-ssid-len.patch
Type: text/x-patch
Size: 407 bytes
Desc: not available
Url : http://lists.shmoo.com/pipermail/hostap/attachments/20060112/525e942d/attachment.bin 

More information about the HostAP mailing list