mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
staging: rtl8723bs: fix stack buffer overflow in OnAssocReq IE parsing
commit 6ef0e1c10455927867cac8f0ed6b49f328f8cf95 upstream. The Supported Rates IE length from an incoming Association Request frame was used directly as the memcpy() length when copying into a fixed-size 16-byte stack buffer (supportRate). A malicious station can advertise an IE length larger than 16 bytes, causing a stack buffer overflow. Clamp ie_len to the buffer size before copying the Supported Rates IE, and correct the bounds check when merging Extended Supported Rates to prevent a second potential overflow. This prevents kernel stack corruption triggered by malformed association requests. Signed-off-by: Navaneeth K <knavaneeth786@gmail.com> Cc: stable <stable@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
30c558447e
commit
34620eb602
@@ -1034,6 +1034,9 @@ unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame)
|
||||
status = WLAN_STATUS_CHALLENGE_FAIL;
|
||||
goto OnAssocReqFail;
|
||||
} else {
|
||||
if (ie_len > sizeof(supportRate))
|
||||
ie_len = sizeof(supportRate);
|
||||
|
||||
memcpy(supportRate, p+2, ie_len);
|
||||
supportRateNum = ie_len;
|
||||
|
||||
@@ -1041,7 +1044,7 @@ unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame)
|
||||
pkt_len - WLAN_HDR_A3_LEN - ie_offset);
|
||||
if (p) {
|
||||
|
||||
if (supportRateNum <= sizeof(supportRate)) {
|
||||
if (supportRateNum + ie_len <= sizeof(supportRate)) {
|
||||
memcpy(supportRate+supportRateNum, p+2, ie_len);
|
||||
supportRateNum += ie_len;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user