Skip to content

Commit f60f945

Browse files
Dan Carpenteropsiff
authored andcommitted
wifi: cfg80211: sme: cap SSID length in __cfg80211_connect_result()
[ Upstream commit 62b635d ] If the ssid->datalen is more than IEEE80211_MAX_SSID_LEN (32) it would lead to memory corruption so add some bounds checking. Fixes: c38c701 ("wifi: cfg80211: Set SSID if it is not already set") Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> Link: https://patch.msgid.link/0aaaae4a3ed37c6252363c34ae4904b1604e8e32.1756456951.git.dan.carpenter@linaro.org Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org> (cherry picked from commit e472f59d02c82b511bc43a3f96d62ed08bf4537f)
1 parent b6bde71 commit f60f945

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

net/wireless/sme.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -915,13 +915,16 @@ void __cfg80211_connect_result(struct net_device *dev,
915915
if (!wdev->u.client.ssid_len) {
916916
rcu_read_lock();
917917
for_each_valid_link(cr, link) {
918+
u32 ssid_len;
919+
918920
ssid = ieee80211_bss_get_elem(cr->links[link].bss,
919921
WLAN_EID_SSID);
920922

921923
if (!ssid || !ssid->datalen)
922924
continue;
923925

924-
memcpy(wdev->u.client.ssid, ssid->data, ssid->datalen);
926+
ssid_len = min(ssid->datalen, IEEE80211_MAX_SSID_LEN);
927+
memcpy(wdev->u.client.ssid, ssid->data, ssid_len);
925928
wdev->u.client.ssid_len = ssid->datalen;
926929
break;
927930
}

0 commit comments

Comments
 (0)