Skip to content

Commit c437467

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: stable@vger.kernel.org Signed-off-by: Janne Grunau <j@jannau.net>
1 parent 0c38364 commit c437467

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

  • drivers/net/wireless/broadcom/brcm80211/brcmfmac

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4320,9 +4320,16 @@ brcmf_pmksa_v3_op(struct brcmf_if *ifp, struct cfg80211_pmksa *pmksa,
43204320
/* Single PMK operation */
43214321
pmk_op->count = cpu_to_le16(1);
43224322
length += sizeof(struct brcmf_pmksa_v3);
4323-
memcpy(pmk_op->pmk[0].bssid, pmksa->bssid, ETH_ALEN);
4324-
memcpy(pmk_op->pmk[0].pmkid, pmksa->pmkid, WLAN_PMKID_LEN);
4325-
pmk_op->pmk[0].pmkid_len = WLAN_PMKID_LEN;
4323+
if (pmksa->bssid)
4324+
memcpy(pmk_op->pmk[0].bssid, pmksa->bssid, ETH_ALEN);
4325+
if (pmksa->pmkid) {
4326+
memcpy(pmk_op->pmk[0].pmkid, pmksa->pmkid, WLAN_PMKID_LEN);
4327+
pmk_op->pmk[0].pmkid_len = WLAN_PMKID_LEN;
4328+
}
4329+
if (pmksa->ssid && pmksa->ssid_len) {
4330+
memcpy(pmk_op->pmk[0].ssid.SSID, pmksa->ssid, pmksa->ssid_len);
4331+
pmk_op->pmk[0].ssid.SSID_len = pmksa->ssid_len;
4332+
}
43264333
pmk_op->pmk[0].time_left = cpu_to_le32(alive ? BRCMF_PMKSA_NO_EXPIRY : 0);
43274334
}
43284335

0 commit comments

Comments
 (0)