]> www.infradead.org Git - users/griffoul/linux.git/commitdiff
wifi: cw1200: cap SSID length in cw1200_do_join()
authorDan Carpenter <dan.carpenter@linaro.org>
Fri, 29 Aug 2025 12:48:28 +0000 (15:48 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 3 Sep 2025 07:37:51 +0000 (09:37 +0200)
If the ssidie[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/e91fb43fcedc4893b604dfb973131661510901a7.1756456951.git.dan.carpenter@linaro.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/st/cw1200/sta.c

index b1dd76e8aecbfe1812ee6c492d77f0bd7fc397fd..5d8eaa700779e53f0e8d743ce8a5095fd1875429 100644 (file)
@@ -1291,7 +1291,7 @@ static void cw1200_do_join(struct cw1200_common *priv)
                rcu_read_lock();
                ssidie = ieee80211_bss_get_ie(bss, WLAN_EID_SSID);
                if (ssidie) {
-                       join.ssid_len = ssidie[1];
+                       join.ssid_len = min(ssidie[1], IEEE80211_MAX_SSID_LEN);
                        memcpy(join.ssid, &ssidie[2], join.ssid_len);
                }
                rcu_read_unlock();