]> git.hungrycats.org Git - linux/commitdiff
Bluetooth: hci_event: validate LE Set CIG Parameters response
authorLaxman Acharya Padhya <acharyalaxman8848@gmail.com>
Sat, 1 Aug 2026 18:09:52 +0000 (23:54 +0545)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Aug 2026 12:32:54 +0000 (14:32 +0200)
commit 0acd4eeb4b225b9bebbf9ef96cc10cdd79b94899 upstream.

The Command Complete dispatch validates only the fixed part of the LE Set
CIG Parameters response. After that part is pulled from the skb,
hci_cc_le_set_cig_params() trusts num_handles and reads each entry in the
trailing handle array.

Matching num_handles against the command's num_cis does not guarantee
that the response contains the advertised handles. A truncated response
from a malfunctioning controller can therefore make the handler read
beyond the skb data.

Validate that the remaining skb data contains all advertised handles.
Include this in the existing response validation so malformed responses
also follow the established CIG failure handling.

Fixes: 26afbd826ee3 ("Bluetooth: Add initial implementation of CIS connections")
Cc: stable@vger.kernel.org
Signed-off-by: Laxman Acharya Padhya <acharyalaxman8848@gmail.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/bluetooth/hci_event.c

index ab940c812cece83c5130669f42de6e65ce1eba6e..3c66262c1f4d88be3613d35098e789bb44b5a557 100644 (file)
@@ -3817,8 +3817,10 @@ static u8 hci_cc_le_set_cig_params(struct hci_dev *hdev, void *data,
        bt_dev_dbg(hdev, "status 0x%2.2x", rp->status);
 
        cp = hci_sent_cmd_data(hdev, HCI_OP_LE_SET_CIG_PARAMS);
-       if (!rp->status && (!cp || rp->num_handles != cp->num_cis ||
-                           rp->cig_id != cp->cig_id)) {
+       if (!rp->status &&
+           (!cp || rp->num_handles != cp->num_cis ||
+            rp->cig_id != cp->cig_id ||
+            skb->len < array_size(rp->num_handles, sizeof(*rp->handle)))) {
                bt_dev_err(hdev, "unexpected Set CIG Parameters response data");
                status = HCI_ERROR_UNSPECIFIED;
        }