Update pending connect radio work BSS pointer on scan update
authorJouni Malinen <jouni@qca.qualcomm.com>
Mon, 27 Oct 2014 22:19:24 +0000 (00:19 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 27 Oct 2014 22:43:58 +0000 (00:43 +0200)
commita7f5271d52e7aabf6c6aee54da2fdcb65df89cdc
tree110b782d31becaadaebe095d14ffb1a1844ff0c9
parent1531402ee4888b28f85ce6333b0f6b7740675990
Update pending connect radio work BSS pointer on scan update

It is possible for scan result processing or BSS entry removal to occur
while there is a pending connect or sme-connect radio work with a
previously selected BSS entry. The BSS pointer was previously verified
to be valid, i.e., still point to a BSS entry, at the time the actual
connection operation is started. However, that BSS entry could have
changed to point to another BSS if the old BSS entry was either removed
or reallocated and a new BSS entry was added at the same location in
memory. This could result in the connection attempt failing to configure
parameters properly due to different BSS information (e.g., different
BSSID).

Fix this by updated the pending connect radio work data on BSS entry
updates similarly to how the last_scan_res array was updated. If the
selected BSS entry is removed, this will still result in a failed
connection, but reallocated BSS entry is now followed properly and used
when the connection work starts.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
wpa_supplicant/bss.c
wpa_supplicant/sme.c
wpa_supplicant/wpa_supplicant.c
wpa_supplicant/wpa_supplicant_i.h