wifi: rtw88: fix the 'para' buffer size to avoid reading out of bounds
authorAlexey Kodanev <aleksei.kodanev@bell-sw.com>
Tue, 13 May 2025 12:13:04 +0000 (12:13 +0000)
committerPing-Ke Shih <pkshih@realtek.com>
Fri, 16 May 2025 01:00:52 +0000 (09:00 +0800)
Set the size to 6 instead of 2, since 'para' array is passed to
'rtw_fw_bt_wifi_control(rtwdev, para[0], &para[1])', which reads
5 bytes:

void rtw_fw_bt_wifi_control(struct rtw_dev *rtwdev, u8 op_code, u8 *data)
{
    ...
    SET_BT_WIFI_CONTROL_DATA1(h2c_pkt, *data);
    SET_BT_WIFI_CONTROL_DATA2(h2c_pkt, *(data + 1));
    ...
    SET_BT_WIFI_CONTROL_DATA5(h2c_pkt, *(data + 4));

Detected using the static analysis tool - Svace.
Fixes: 4136214f7c46 ("rtw88: add BT co-existence support")
Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20250513121304.124141-1-aleksei.kodanev@bell-sw.com
drivers/net/wireless/realtek/rtw88/coex.c

index c929db1e53ca630e9611e9232face45e8e44eab3..64904278ddad7daf91ecadef7b8f763c9731c7ed 100644 (file)
@@ -309,7 +309,7 @@ static void rtw_coex_tdma_timer_base(struct rtw_dev *rtwdev, u8 type)
 {
        struct rtw_coex *coex = &rtwdev->coex;
        struct rtw_coex_stat *coex_stat = &coex->stat;
-       u8 para[2] = {0};
+       u8 para[6] = {};
        u8 times;
        u16 tbtt_interval = coex_stat->wl_beacon_interval;