[v2] staging: rtl8192e: Fix possible buffer overflow in _rtl92e_wx_set_scan
diff mbox series

Message ID 20210226132725.401813-1-leegib@gmail.com
State Accepted
Commit 8687bf9ef9551bcf93897e33364d121667b1aadf
Headers show
Series
  • [v2] staging: rtl8192e: Fix possible buffer overflow in _rtl92e_wx_set_scan
Related show

Commit Message

Lee Gibson Feb. 26, 2021, 1:27 p.m. UTC
Function _rtl92e_wx_set_scan calls memcpy without checking the length.
A user could control that length and trigger a buffer overflow.
Fix by checking the length is within the maximum allowed size.

Changes in v2: 
	Changed to use min_t as per useful suggestions

Signed-off-by: Lee Gibson <leegib@gmail.com>
---
 drivers/staging/rtl8192e/rtl8192e/rtl_wx.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Dan Carpenter Feb. 26, 2021, 1:48 p.m. UTC | #1
On Fri, Feb 26, 2021 at 01:27:25PM +0000, Lee Gibson wrote:
> Function _rtl92e_wx_set_scan calls memcpy without checking the length.
> A user could control that length and trigger a buffer overflow.
> Fix by checking the length is within the maximum allowed size.
> 
> Changes in v2: 
> 	Changed to use min_t as per useful suggestions

This kind of information is supposed to go below the --- cut off line

> 
> Signed-off-by: Lee Gibson <leegib@gmail.com>
> ---
  ^^^

here.

regards,
dan carpenter

Patch
diff mbox series

diff --git a/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c b/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c
index 16bcee13f64b..407effde5e71 100644
--- a/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c
@@ -406,9 +406,10 @@  static int _rtl92e_wx_set_scan(struct net_device *dev,
 		struct iw_scan_req *req = (struct iw_scan_req *)b;
 
 		if (req->essid_len) {
-			ieee->current_network.ssid_len = req->essid_len;
-			memcpy(ieee->current_network.ssid, req->essid,
-			       req->essid_len);
+			int len = min_t(int, req->essid_len, IW_ESSID_MAX_SIZE);
+
+			ieee->current_network.ssid_len = len;
+			memcpy(ieee->current_network.ssid, req->essid, len);
 		}
 	}