From 9331fbc5a435c32512f7f6ad452cf16ae2b720e8 Mon Sep 17 00:00:00 2001 From: Andrzej Kaczmarek Date: Fri, 19 Aug 2022 13:41:01 +0200 Subject: [PATCH] nimble/ll: Fix own address type check during scan We did not check own address type requested for scan when filtering so we matched random address even if public address was requested and vv. This fixes LL/DDI/SCN/BV-71-C. --- nimble/controller/src/ble_ll_scan.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/nimble/controller/src/ble_ll_scan.c b/nimble/controller/src/ble_ll_scan.c index 4893b2b0c..010fe150b 100644 --- a/nimble/controller/src/ble_ll_scan.c +++ b/nimble/controller/src/ble_ll_scan.c @@ -1333,7 +1333,8 @@ ble_ll_scan_rx_filter(uint8_t own_addr_type, uint8_t scan_filt_policy, } /* Ignore if not directed to us */ - if (!ble_ll_is_our_devaddr(addrd->targeta, addrd->targeta_type)) { + if ((addrd->targeta_type != (own_addr_type & 0x01)) || + !ble_ll_is_our_devaddr(addrd->targeta, addrd->targeta_type)) { return -1; } break; @@ -1347,7 +1348,8 @@ ble_ll_scan_rx_filter(uint8_t own_addr_type, uint8_t scan_filt_policy, #else /* Ignore if not directed to us */ if (addrd->targeta && - !ble_ll_is_our_devaddr(addrd->targeta, addrd->targeta_type)) { + ((addrd->targeta_type != (own_addr_type & 0x01)) || + !ble_ll_is_our_devaddr(addrd->targeta, addrd->targeta_type))) { return -1; }