If the peer_cnt > BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT, I think it may cause null point error.
for (uint32_t i = 0; i < peer_cnt; i++)
{
memset(&bond_data, 0x00, sizeof(bond_data));
// Read peer data from flash.
ret = pds_peer_data_read(p_peers[i], PM_PEER_DATA_ID_BONDING,
&peer_data, &buf_size);
if ((ret == NRF_ERROR_NOT_FOUND) || (ret == NRF_ERROR_INVALID_PARAM))
{
NRF_LOG_WARNING("peer id %d: Peer data could not be found in flash. Remove the peer ID "
"from the peer list and try again.",
p_peers[i]);
return NRF_ERROR_NOT_FOUND;
}
uint8_t const addr_type = bond_data.peer_ble_id.id_addr_info.addr_type;
if ((addr_type != BLE_GAP_ADDR_TYPE_PUBLIC) &&
(addr_type != BLE_GAP_ADDR_TYPE_RANDOM_STATIC))
{
NRF_LOG_WARNING("peer id %d: The address shared by the peer during bonding cannot be "
"whitelisted. Remove the peer ID from the peer list and try again.",
p_peers[i]);
return BLE_ERROR_GAP_INVALID_BLE_ADDR;
}
// Copy data to the buffer.
memcpy(&keys[i], &bond_data.peer_ble_id, sizeof(ble_gap_id_key_t));
}