mirror of
https://github.com/torvalds/linux.git
synced 2026-09-11 20:13:02 +02:00
Bluetooth: btintel_pcie: validate packet_len before skb_put_data
btintel_pcie_submit_rx_work() reads packet_len from rfh_hdr without
checking if it exceeds the RX buffer size. An oversized packet_len
can lead to an out-of-bounds read in skb_put_data().
Validate packet_len to ensure it is non-zero and does not exceed
BTINTEL_PCIE_BUFFER_SIZE - sizeof(*rfh_hdr), logging an error when
invalid.
This issue was reported by Claude Mythos. It can be simulated either by
using customized firmware configured to return an invalid packet_len or
by modifying rfh_hdr->packet_len in the driver before calling
btintel_pcie_submit_rx_work().
Fixes: c2b636b3f7 ("Bluetooth: btintel_pcie: Add support for PCIe transport")
Signed-off-by: Kiran K <kiran.k@intel.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
parent
83e3e515fd
commit
6436e1b533
|
|
@ -1599,7 +1599,9 @@ static int btintel_pcie_submit_rx_work(struct btintel_pcie_data *data, u8 status
|
|||
rfh_hdr = buf;
|
||||
|
||||
len = rfh_hdr->packet_len;
|
||||
if (len <= 0) {
|
||||
if (len == 0 || len > BTINTEL_PCIE_BUFFER_SIZE - sizeof(*rfh_hdr)) {
|
||||
bt_dev_err(data->hdev, "Invalid packet_len %d (max %zu)", len,
|
||||
BTINTEL_PCIE_BUFFER_SIZE - sizeof(*rfh_hdr));
|
||||
ret = -EINVAL;
|
||||
goto resubmit;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user