Use SSID from driver when finding the current BSS entry

The local network profile may not have matching SSID (it could be either
the wildcard 0-length SSID or visible SSID in case of OWE transition
mode), so check whether an exact match with a BSS entry can be made
using the current SSID information from the driver (i.e., the SSID of
the current association) when picking the BSS entry to use as the
current one for an association.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
This commit is contained in:
Jouni Malinen 2023-11-08 11:56:03 +02:00 committed by Jouni Malinen
parent a3020f852e
commit 5b12a05590

View file

@ -144,8 +144,13 @@ static struct wpa_bss * wpa_supplicant_get_new_bss(
{
struct wpa_bss *bss = NULL;
struct wpa_ssid *ssid = wpa_s->current_ssid;
u8 drv_ssid[SSID_MAX_LEN];
int res;
if (ssid && ssid->ssid_len > 0)
res = wpa_drv_get_ssid(wpa_s, drv_ssid);
if (res > 0)
bss = wpa_bss_get(wpa_s, bssid, drv_ssid, res);
if (!bss && ssid && ssid->ssid_len > 0)
bss = wpa_bss_get(wpa_s, bssid, ssid->ssid, ssid->ssid_len);
if (!bss)
bss = wpa_bss_get_bssid(wpa_s, bssid);