Skip to content

Commit e93339b

Browse files
committed
wifi: brcmfmac: cfg80211: Handle SSID based pmksa deletion
wpa_supplicant 2.11 sends since 1efdba5fdc2c ("Handle PMKSA flush in the driver for SAE/OWE offload cases") SSID based PMKSA del commands. brcmfmac is not prepared and tries to dereference the NULL bssid and pmkid pointers in cfg80211_pmksa. PMKID_V3 operations support SSID based updates so copy the SSID. Fixes: a96202a ("wifi: brcmfmac: cfg80211: Add support for PMKID_V3 operations") Cc: [email protected] Signed-off-by: Janne Grunau <[email protected]>
1 parent 83a2784 commit e93339b

File tree

1 file changed

+10
-3
lines changed
  • drivers/net/wireless/broadcom/brcm80211/brcmfmac

1 file changed

+10
-3
lines changed

drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4194,9 +4194,16 @@ brcmf_pmksa_v3_op(struct brcmf_if *ifp, struct cfg80211_pmksa *pmksa,
41944194
/* Single PMK operation */
41954195
pmk_op->count = cpu_to_le16(1);
41964196
length += sizeof(struct brcmf_pmksa_v3);
4197-
memcpy(pmk_op->pmk[0].bssid, pmksa->bssid, ETH_ALEN);
4198-
memcpy(pmk_op->pmk[0].pmkid, pmksa->pmkid, WLAN_PMKID_LEN);
4199-
pmk_op->pmk[0].pmkid_len = WLAN_PMKID_LEN;
4197+
if (pmksa->bssid)
4198+
memcpy(pmk_op->pmk[0].bssid, pmksa->bssid, ETH_ALEN);
4199+
if (pmksa->pmkid) {
4200+
memcpy(pmk_op->pmk[0].pmkid, pmksa->pmkid, WLAN_PMKID_LEN);
4201+
pmk_op->pmk[0].pmkid_len = WLAN_PMKID_LEN;
4202+
}
4203+
if (pmksa->ssid && pmksa->ssid_len) {
4204+
memcpy(pmk_op->pmk[0].ssid.SSID, pmksa->ssid, pmksa->ssid_len);
4205+
pmk_op->pmk[0].ssid.SSID_len = pmksa->ssid_len;
4206+
}
42004207
pmk_op->pmk[0].time_left = cpu_to_le32(alive ? BRCMF_PMKSA_NO_EXPIRY : 0);
42014208
}
42024209

0 commit comments

Comments
 (0)