Skip to content

Commit fee6450

Browse files
Vudentzholtmann
authored andcommitted
Bluetooth: hci_event: Use skb_pull_data when processing inquiry results
This makes each result entry to be checked using skb_pull_data instead of acessing them by index. Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
1 parent 744451c commit fee6450

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

net/bluetooth/hci_event.c

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4531,7 +4531,15 @@ static void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, void *edata,
45314531
for (i = 0; i < ev->res2->num; i++) {
45324532
u32 flags;
45334533

4534-
info = &ev->res2->info[i];
4534+
info = hci_ev_skb_pull(hdev, skb,
4535+
HCI_EV_INQUIRY_RESULT_WITH_RSSI,
4536+
sizeof(*info));
4537+
if (!info) {
4538+
bt_dev_err(hdev, "Malformed HCI Event: 0x%2.2x",
4539+
HCI_EV_INQUIRY_RESULT_WITH_RSSI);
4540+
return;
4541+
}
4542+
45354543
bacpy(&data.bdaddr, &info->bdaddr);
45364544
data.pscan_rep_mode = info->pscan_rep_mode;
45374545
data.pscan_period_mode = info->pscan_period_mode;
@@ -4553,7 +4561,15 @@ static void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, void *edata,
45534561
for (i = 0; i < ev->res1->num; i++) {
45544562
u32 flags;
45554563

4556-
info = &ev->res1->info[i];
4564+
info = hci_ev_skb_pull(hdev, skb,
4565+
HCI_EV_INQUIRY_RESULT_WITH_RSSI,
4566+
sizeof(*info));
4567+
if (!info) {
4568+
bt_dev_err(hdev, "Malformed HCI Event: 0x%2.2x",
4569+
HCI_EV_INQUIRY_RESULT_WITH_RSSI);
4570+
return;
4571+
}
4572+
45574573
bacpy(&data.bdaddr, &info->bdaddr);
45584574
data.pscan_rep_mode = info->pscan_rep_mode;
45594575
data.pscan_period_mode = info->pscan_period_mode;

0 commit comments

Comments
 (0)