diff --git a/include/bat/ledger/ledger_callback_handler.h b/include/bat/ledger/ledger_callback_handler.h index df5221c43112..3e3c05296d48 100644 --- a/include/bat/ledger/ledger_callback_handler.h +++ b/include/bat/ledger/ledger_callback_handler.h @@ -23,6 +23,9 @@ LEDGER_EXPORT enum Result { TOO_MANY_RESULTS, NOT_FOUND, + + REGISTRATION_VERIFICATION_FAILED, + BAD_REGISTRATION_RESPONSE, // some more useful result codes should go here }; diff --git a/src/bat_client.cc b/src/bat_client.cc index c14c0d5f7f58..781e396d269f 100644 --- a/src/bat_client.cc +++ b/src/bat_client.cc @@ -137,12 +137,18 @@ void BatClient::registerPersonaCallback(bool result, } std::string verification; - braveledger_bat_helper::getJSONValue(VERIFICATION_FIELDNAME, response, verification); + if (!braveledger_bat_helper::getJSONValue(VERIFICATION_FIELDNAME, response, verification)) { + ledger_->OnWalletInitialized(ledger::Result::BAD_REGISTRATION_RESPONSE); + return; + } const char* masterUserToken = registerUserFinal(state_->userId_.c_str(), verification.c_str(), state_->preFlight_.c_str(), state_->registrarVK_.c_str()); if (nullptr != masterUserToken) { state_->masterUserToken_ = masterUserToken; free((void*)masterUserToken); + } else { + ledger_->OnWalletInitialized(ledger::Result::REGISTRATION_VERIFICATION_FAILED); + return; } braveledger_bat_helper::getJSONWalletInfo(response, state_->walletInfo_, state_->fee_currency_, state_->fee_amount_, state_->days_);