Bugfix: Fix incomplete clearing of peer_dev_rec

This commit is contained in:
Sumeet Singh
2024-02-14 18:51:45 +05:30
committed by Abhinav Kudnar
parent 8301804a7d
commit 9b6c19b398
+6 -16
View File
@@ -111,17 +111,16 @@ static void
ble_rpa_peer_dev_rec_clear_all(void) ble_rpa_peer_dev_rec_clear_all(void)
{ {
uint8_t i; uint8_t i;
int num_peer_dev_rec = ble_store_num_peer_dev_rec;
/* As NVS record need to be deleted one by one, we loop through /* As NVS record need to be deleted one by one, we loop through
* peer_records */ * peer_records */
for (i = 0; i < ble_store_num_peer_dev_rec; i++) { for (i = 0; i < num_peer_dev_rec; i++) {
ble_store_num_peer_dev_rec--; ble_store_num_peer_dev_rec--;
memmove(&peer_dev_rec[0], &peer_dev_rec[1],
if ((i != ble_store_num_peer_dev_rec) && (ble_store_num_peer_dev_rec != 0)) { ble_store_num_peer_dev_rec * sizeof(struct ble_hs_dev_records));
memmove(&peer_dev_rec[i], &peer_dev_rec[i + 1], memset(&peer_dev_rec[ble_store_num_peer_dev_rec], 0,
(ble_store_num_peer_dev_rec - i + 1) * sizeof(struct ble_hs_dev_records )); sizeof(struct ble_hs_dev_records));
}
ble_store_persist_peer_records(); ble_store_persist_peer_records();
} }
return; return;
@@ -230,15 +229,6 @@ ble_rpa_resolv_add_peer_rec(uint8_t *peer_addr)
{ {
struct ble_hs_dev_records *p_dev_rec = struct ble_hs_dev_records *p_dev_rec =
&peer_dev_rec[ble_store_num_peer_dev_rec]; &peer_dev_rec[ble_store_num_peer_dev_rec];
uint8_t idx = 0;
while (p_dev_rec->rec_used) {
p_dev_rec++;
idx++;
if (idx > MYNEWT_VAL(BLE_STORE_MAX_BONDS)) {
return BLE_HS_ESTORE_CAP;
}
}
p_dev_rec->rec_used = 1; p_dev_rec->rec_used = 1;
memcpy(p_dev_rec->pseudo_addr, peer_addr, BLE_DEV_ADDR_LEN); memcpy(p_dev_rec->pseudo_addr, peer_addr, BLE_DEV_ADDR_LEN);