mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
brcmfmac: avoid potential stack overflow in brcmf_cfg80211_start_ap()
commit ded8991215 upstream.
User-space can choose to omit NL80211_ATTR_SSID and only provide raw
IE TLV data. When doing so it can provide SSID IE with length exceeding
the allowed size. The driver further processes this IE copying it
into a local variable without checking the length. Hence stack can be
corrupted and used as exploit.
Reported-by: Daxing Guo <freener.gdx@gmail.com>
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Juerg Haefliger <juerg.haefliger@hpe.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b5784d4209
commit
b82a7f93b4
@@ -4102,7 +4102,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
|
||||
(u8 *)&settings->beacon.head[ie_offset],
|
||||
settings->beacon.head_len - ie_offset,
|
||||
WLAN_EID_SSID);
|
||||
if (!ssid_ie)
|
||||
if (!ssid_ie || ssid_ie->len > IEEE80211_MAX_SSID_LEN)
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(ssid_le.SSID, ssid_ie->data, ssid_ie->len);
|
||||
|
||||
Reference in New Issue
Block a user