From 3b7a32ea09a3bffaab831ee0ab193a2375fc4df6 Mon Sep 17 00:00:00 2001 From: Szymon Janc Date: Mon, 23 Sep 2024 15:57:46 +0200 Subject: [PATCH] nimble/host: Fix legacy advertising report event validation If event contained more than one report it would likely failed validation due to invalid data comparison. --- nimble/host/src/ble_hs_hci_evt.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/nimble/host/src/ble_hs_hci_evt.c b/nimble/host/src/ble_hs_hci_evt.c index 3cb5f9858..181a2fb48 100644 --- a/nimble/host/src/ble_hs_hci_evt.c +++ b/nimble/host/src/ble_hs_hci_evt.c @@ -479,15 +479,13 @@ ble_hs_hci_evt_le_adv_rpt_first_pass(const void *data, unsigned int len) rpt = data; - len -= sizeof(*rpt) + 1; - data += sizeof(rpt) + 1; - if (rpt->data_len > len) { return BLE_HS_ECONTROLLER; } - len -= rpt->data_len; - data += rpt->data_len; + /* extra byte for RSSI after adv data */ + len -= sizeof(*rpt) + 1 + rpt->data_len; + data += sizeof(*rpt) + 1 + rpt->data_len; } /* Make sure length was correct */