From 3a2dc69f1138bd8edb025379636b2f4b37e2841a Mon Sep 17 00:00:00 2001 From: paul-szczepanek-arm <33840200+paul-szczepanek-arm@users.noreply.github.com> Date: Tue, 29 May 2018 16:00:12 +0100 Subject: [PATCH] fix not updating size of array --- features/FEATURE_BLE/ble/generic/SecurityDb.h | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/features/FEATURE_BLE/ble/generic/SecurityDb.h b/features/FEATURE_BLE/ble/generic/SecurityDb.h index b8c2ea25c8..2f75def80f 100644 --- a/features/FEATURE_BLE/ble/generic/SecurityDb.h +++ b/features/FEATURE_BLE/ble/generic/SecurityDb.h @@ -584,7 +584,7 @@ public: WhitelistDbCb_t cb, ::Gap::Whitelist_t *whitelist ) { - for (size_t i = 0; i < get_entry_count() && i < whitelist->capacity; i++) { + for (size_t i = 0; i < get_entry_count() && whitelist->size < whitelist->capacity; i++) { entry_handle_t db_handle = get_entry_handle_by_index(i); SecurityDistributionFlags_t* flags = get_distribution_flags(db_handle); @@ -592,20 +592,24 @@ public: continue; } - if (flags->peer_address_is_public) { - whitelist->addresses[i].type = BLEProtocol::AddressType::PUBLIC; - } else { - whitelist->addresses[i].type = BLEProtocol::AddressType::RANDOM_STATIC; + SecurityEntryIdentity_t* identity = read_in_entry_peer_identity(db_handle); + if (!identity) { + continue; } - SecurityEntryIdentity_t* identity = read_in_entry_peer_identity(db_handle); - if (identity) { - memcpy( - whitelist->addresses[i].address, - identity->identity_address.data(), - sizeof(BLEProtocol::AddressBytes_t) - ); + memcpy( + whitelist->addresses[whitelist->size].address, + identity->identity_address.data(), + sizeof(BLEProtocol::AddressBytes_t) + ); + + if (flags->peer_address_is_public) { + whitelist->addresses[whitelist->size].type = BLEProtocol::AddressType::PUBLIC; + } else { + whitelist->addresses[whitelist->size].type = BLEProtocol::AddressType::RANDOM_STATIC; } + + whitelist->size++; } cb(whitelist);