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)
{
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
* 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--;
if ((i != ble_store_num_peer_dev_rec) && (ble_store_num_peer_dev_rec != 0)) {
memmove(&peer_dev_rec[i], &peer_dev_rec[i + 1],
(ble_store_num_peer_dev_rec - i + 1) * sizeof(struct ble_hs_dev_records ));
}
memmove(&peer_dev_rec[0], &peer_dev_rec[1],
ble_store_num_peer_dev_rec * sizeof(struct ble_hs_dev_records));
memset(&peer_dev_rec[ble_store_num_peer_dev_rec], 0,
sizeof(struct ble_hs_dev_records));
ble_store_persist_peer_records();
}
return;
@@ -230,15 +229,6 @@ ble_rpa_resolv_add_peer_rec(uint8_t *peer_addr)
{
struct ble_hs_dev_records *p_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;
memcpy(p_dev_rec->pseudo_addr, peer_addr, BLE_DEV_ADDR_LEN);