|
Takashi Iwai |
3f405a |
From 8687bf9ef9551bcf93897e33364d121667b1aadf Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
3f405a |
From: Lee Gibson <leegib@gmail.com>
|
|
Takashi Iwai |
3f405a |
Date: Fri, 26 Feb 2021 14:51:57 +0000
|
|
Takashi Iwai |
3f405a |
Subject: [PATCH] staging: rtl8192e: Fix possible buffer overflow in _rtl92e_wx_set_scan
|
|
Takashi Iwai |
3f405a |
Git-commit: 8687bf9ef9551bcf93897e33364d121667b1aadf
|
|
Takashi Iwai |
3f405a |
Patch-mainline: v5.12-rc3
|
|
Takashi Iwai |
3f405a |
References: git-fixes
|
|
Takashi Iwai |
3f405a |
|
|
Takashi Iwai |
3f405a |
Function _rtl92e_wx_set_scan calls memcpy without checking the length.
|
|
Takashi Iwai |
3f405a |
A user could control that length and trigger a buffer overflow.
|
|
Takashi Iwai |
3f405a |
Fix by checking the length is within the maximum allowed size.
|
|
Takashi Iwai |
3f405a |
|
|
Takashi Iwai |
3f405a |
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
|
|
Takashi Iwai |
3f405a |
Signed-off-by: Lee Gibson <leegib@gmail.com>
|
|
Takashi Iwai |
3f405a |
Cc: stable <stable@vger.kernel.org>
|
|
Takashi Iwai |
3f405a |
Link: https://lore.kernel.org/r/20210226145157.424065-1-leegib@gmail.com
|
|
Takashi Iwai |
3f405a |
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
Takashi Iwai |
3f405a |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
3f405a |
|
|
Takashi Iwai |
3f405a |
---
|
|
Takashi Iwai |
3f405a |
drivers/staging/rtl8192e/rtl8192e/rtl_wx.c | 7 ++++---
|
|
Takashi Iwai |
3f405a |
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
Takashi Iwai |
3f405a |
|
|
Takashi Iwai |
3f405a |
diff --git a/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c b/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c
|
|
Takashi Iwai |
3f405a |
index 16bcee13f64b..407effde5e71 100644
|
|
Takashi Iwai |
3f405a |
--- a/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c
|
|
Takashi Iwai |
3f405a |
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c
|
|
Takashi Iwai |
3f405a |
@@ -406,9 +406,10 @@ static int _rtl92e_wx_set_scan(struct net_device *dev,
|
|
Takashi Iwai |
3f405a |
struct iw_scan_req *req = (struct iw_scan_req *)b;
|
|
Takashi Iwai |
3f405a |
|
|
Takashi Iwai |
3f405a |
if (req->essid_len) {
|
|
Takashi Iwai |
3f405a |
- ieee->current_network.ssid_len = req->essid_len;
|
|
Takashi Iwai |
3f405a |
- memcpy(ieee->current_network.ssid, req->essid,
|
|
Takashi Iwai |
3f405a |
- req->essid_len);
|
|
Takashi Iwai |
3f405a |
+ int len = min_t(int, req->essid_len, IW_ESSID_MAX_SIZE);
|
|
Takashi Iwai |
3f405a |
+
|
|
Takashi Iwai |
3f405a |
+ ieee->current_network.ssid_len = len;
|
|
Takashi Iwai |
3f405a |
+ memcpy(ieee->current_network.ssid, req->essid, len);
|
|
Takashi Iwai |
3f405a |
}
|
|
Takashi Iwai |
3f405a |
}
|
|
Takashi Iwai |
3f405a |
|
|
Takashi Iwai |
3f405a |
--
|
|
Takashi Iwai |
3f405a |
2.26.2
|
|
Takashi Iwai |
3f405a |
|