]> www.infradead.org Git - users/griffoul/linux.git/commitdiff
wifi: libertas: cap SSID len in lbs_associate()
authorDan Carpenter <dan.carpenter@linaro.org>
Fri, 29 Aug 2025 12:48:35 +0000 (15:48 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 3 Sep 2025 07:37:51 +0000 (09:37 +0200)
If the ssid_eid[1] length is more that 32 it leads to memory corruption.

Fixes: a910e4a94f69 ("cw1200: add driver for the ST-E CW1100 & CW1200 WLAN chipsets")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://patch.msgid.link/2a40f5ec7617144aef412034c12919a4927d90ad.1756456951.git.dan.carpenter@linaro.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/marvell/libertas/cfg.c

index 94dd488becaf6e1f0b46c5625eb27c2ad0fb19be..caba7491cd5abc6fc070fce9316dec46f67cab70 100644 (file)
@@ -1151,10 +1151,13 @@ static int lbs_associate(struct lbs_private *priv,
        /* add SSID TLV */
        rcu_read_lock();
        ssid_eid = ieee80211_bss_get_ie(bss, WLAN_EID_SSID);
-       if (ssid_eid)
-               pos += lbs_add_ssid_tlv(pos, ssid_eid + 2, ssid_eid[1]);
-       else
+       if (ssid_eid) {
+               u32 ssid_len = min(ssid_eid[1], IEEE80211_MAX_SSID_LEN);
+
+               pos += lbs_add_ssid_tlv(pos, ssid_eid + 2, ssid_len);
+       } else {
                lbs_deb_assoc("no SSID\n");
+       }
        rcu_read_unlock();
 
        /* add DS param TLV */