staging: rtl8723bs: prevent ->Ssid overflow in rtw_wx_set_scan()
authorDenis Efremov (Oracle) <efremov@linux.com>
Mon, 23 May 2022 17:39:43 +0000 (21:39 +0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Jun 2022 06:24:20 +0000 (08:24 +0200)
This code has a check to prevent read overflow but it needs another
check to prevent writing beyond the end of the ->Ssid[] array.

Fixes: 554c0a3abf21 ("staging: Add rtl8723bs sdio wifi driver")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Denis Efremov (Oracle) <efremov@linux.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8723bs/os_dep/ioctl_linux.c

index 466d25ccc4bbc857c41faf95daa11bc96de94f79..40d7130a4909bfad044239e9facaee9f5d194c30 100644 (file)
@@ -1359,9 +1359,11 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a,
 
                                        sec_len = *(pos++); len-= 1;
 
-                                       if (sec_len>0 && sec_len<=len) {
+                                       if (sec_len > 0 &&
+                                           sec_len <= len &&
+                                           sec_len <= 32) {
                                                ssid[ssid_index].SsidLength = sec_len;
-                                               memcpy(ssid[ssid_index].Ssid, pos, ssid[ssid_index].SsidLength);
+                                               memcpy(ssid[ssid_index].Ssid, pos, sec_len);
                                                /* DBG_871X("%s COMBO_SCAN with specific ssid:%s, %d\n", __func__ */
                                                /*      , ssid[ssid_index].Ssid, ssid[ssid_index].SsidLength); */
                                                ssid_index++;