Skip to content

Commit 20a2aa0

Browse files
committed
Bluetooth: Fix NULL pointer deference on eir_get_service_data
The len parameter is considered optional so it can be NULL so it cannot be used for skipping to next entry of EIR_SERVICE_DATA. Fixes: 8f9ae5b ("Bluetooth: eir: Add helpers for managing service data") Signed-off-by: Luiz Augusto von Dentz <[email protected]>
1 parent 260388f commit 20a2aa0

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

net/bluetooth/eir.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -366,17 +366,19 @@ u8 eir_create_scan_rsp(struct hci_dev *hdev, u8 instance, u8 *ptr)
366366

367367
void *eir_get_service_data(u8 *eir, size_t eir_len, u16 uuid, size_t *len)
368368
{
369-
while ((eir = eir_get_data(eir, eir_len, EIR_SERVICE_DATA, len))) {
369+
size_t dlen;
370+
371+
while ((eir = eir_get_data(eir, eir_len, EIR_SERVICE_DATA, &dlen))) {
370372
u16 value = get_unaligned_le16(eir);
371373

372374
if (uuid == value) {
373375
if (len)
374-
*len -= 2;
376+
*len = dlen - 2;
375377
return &eir[2];
376378
}
377379

378-
eir += *len;
379-
eir_len -= *len;
380+
eir += dlen;
381+
eir_len -= dlen;
380382
}
381383

382384
return NULL;

0 commit comments

Comments
 (0)