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)); }