[SRU OEM-6.0 1/9] wifi: cfg80211: fix u8 overflow in cfg80211_update_notlisted_nontrans()

Thadeu Lima de Souza Cascardo cascardo at canonical.com
Tue Oct 18 17:43:04 UTC 2022


From: Johannes Berg <johannes.berg at intel.com>

In the copy code of the elements, we do the following calculation
to reach the end of the MBSSID element:

	/* copy the IEs after MBSSID */
	cpy_len = mbssid[1] + 2;

This looks fine, however, cpy_len is a u8, the same as mbssid[1],
so the addition of two can overflow. In this case the subsequent
memcpy() will overflow the allocated buffer, since it copies 256
bytes too much due to the way the allocation and memcpy() sizes
are calculated.

Fix this by using size_t for the cpy_len variable.

This fixes CVE-2022-41674.

Reported-by: Soenke Huster <shuster at seemoo.tu-darmstadt.de>
Tested-by: Soenke Huster <shuster at seemoo.tu-darmstadt.de>
Fixes: 0b8fb8235be8 ("cfg80211: Parsing of Multiple BSSID information in scanning")
Reviewed-by: Kees Cook <keescook at chromium.org>
Signed-off-by: Johannes Berg <johannes.berg at intel.com>
(cherry picked from commit aebe9f4639b13a1f4e9a6b42cdd2e38c617b442d)
CVE-2022-41674
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo at canonical.com>
---
 net/wireless/scan.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index 0134e5d5c81a..f59bfc09ca60 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -2279,7 +2279,7 @@ cfg80211_update_notlisted_nontrans(struct wiphy *wiphy,
 	size_t new_ie_len;
 	struct cfg80211_bss_ies *new_ies;
 	const struct cfg80211_bss_ies *old;
-	u8 cpy_len;
+	size_t cpy_len;
 
 	lockdep_assert_held(&wiphy_to_rdev(wiphy)->bss_lock);
 
-- 
2.34.1




More information about the kernel-team mailing list