NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/44506: ieee80211_match_bss matches all different SSIDs of the identical length



>Number:         44506
>Category:       kern
>Synopsis:       ieee80211_match_bss matches all different SSIDs of the 
>identical length
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Feb 02 23:25:00 +0000 2011
>Originator:     James Woo
>Release:        NetBSD 4.0.1
>Organization:
        Ricoh Americas
>Environment:
System: NetBSD ibm143 4.0.1 NetBSD 4.0.1 (ibm) #304: Wed Feb 2 13:56:50 UTC 
2011 root@ibm143:/usr/src/sys/arch/i386/compile/ibm i386
Architecture: i386
Machine: i386
>Description:
        ieee80211_match will match all different SSIDs of the identical length
        Connection is only successful if the target SSID has a higher RSSI than
        the other "matching" SSIDs. Otherwise, connection is not possible if 
the target SSID
        has a lower RSSI than the other "matching" SSIDs.
>How-To-Repeat:
        Assign different SSIDs of identical length to several APs.
        Try to connect to the one with the lowest RSSI. It will fail to connect.
        Now connect to the one with the highest RSSI. It will succeed.
>Fix:
        net80211/ieee80211_node.c, line 532-534 was
        if (ic->ic_dess_esslen != 0 &&
            (ni->ni_esslen != ic->ic_des_esslen ||
             memcmp(ni->ni_essid, ic->ic_des_essid, ic->ic_des_esslen) != 0))
        should be change to:
        if (ic->ic_des_esslen != 0) {
            if (ni->ni_esslen == ic->ic_des_esslen) {
                if (memcmp(ni->ni_essid, ic->ic_des_essid, ic->ic_dess_esslen) 
!= 0)



Home | Main Index | Thread Index | Old Index