projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
c786794
)
wifi: cfg80211: sme: cap SSID length in __cfg80211_connect_result()
author
Dan Carpenter
<dan.carpenter@linaro.org>
Fri, 29 Aug 2025 12:48:45 +0000
(15:48 +0300)
committer
Johannes Berg
<johannes.berg@intel.com>
Wed, 3 Sep 2025 07:37:55 +0000
(09:37 +0200)
If the ssid->datalen is more than IEEE80211_MAX_SSID_LEN (32) it would
lead to memory corruption so add some bounds checking.
Fixes:
c38c70185101
("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>
net/wireless/sme.c
patch
|
blob
|
history
diff --git
a/net/wireless/sme.c
b/net/wireless/sme.c
index
826ec0a
..
3a028ff
100644
(file)
--- a/
net/wireless/sme.c
+++ b/
net/wireless/sme.c
@@
-900,13
+900,16
@@
void __cfg80211_connect_result(struct net_device *dev,
if (!wdev->u.client.ssid_len) {
rcu_read_lock();
for_each_valid_link(cr, link) {
+ u32 ssid_len;
+
ssid = ieee80211_bss_get_elem(cr->links[link].bss,
WLAN_EID_SSID);
if (!ssid || !ssid->datalen)
continue;
- memcpy(wdev->u.client.ssid, ssid->data, ssid->datalen);
+ ssid_len = min(ssid->datalen, IEEE80211_MAX_SSID_LEN);
+ memcpy(wdev->u.client.ssid, ssid->data, ssid_len);
wdev->u.client.ssid_len = ssid->datalen;
break;
}