Make setWhitelist check errors before changing state

This commit is contained in:
Andres Amaya Garcia 2016-01-08 14:18:44 +00:00
parent 553551aa4f
commit 12e6c9ec09
1 changed files with 5 additions and 1 deletions

View File

@ -659,12 +659,16 @@ ble_error_t nRF5xGap::setWhitelist(const Gap::Whitelist_t &whitelistIn)
return BLE_ERROR_PARAM_OUT_OF_RANGE;
}
whitelistAddressesSize = 0;
/* Test for invalid parameters before we change the internal state */
for (uint8_t i = 0; i < whitelistIn.size; ++i) {
if (whitelistIn.addresses[i].type == BLEProtocol::AddressType_t::RANDOM_PRIVATE_NON_RESOLVABLE) {
/* This is not allowed because it is completely meaningless */
return BLE_ERROR_INVALID_PARAM;
}
}
whitelistAddressesSize = 0;
for (uint8_t i = 0; i < whitelistIn.size; ++i) {
memcpy(&whitelistAddresses[whitelistAddressesSize], &whitelistIn.addresses[i], sizeof(BLEProtocol::Address_t));
whitelistAddressesSize++;
}