Index: chrome/browser/internal_auth.cc |
diff --git a/chrome/browser/internal_auth.cc b/chrome/browser/internal_auth.cc |
index 268ee1be3fedb4cb72e662637168df75b19abe44..ac8d91f1d6bd8e4bf3314019cd2c5bbba979864d 100644 |
--- a/chrome/browser/internal_auth.cc |
+++ b/chrome/browser/internal_auth.cc |
@@ -251,8 +251,11 @@ class InternalAuthVerificationService { |
if (key.size() != kKeySizeInBytes) |
return; |
- engine_.reset(new crypto::HMAC(crypto::HMAC::SHA256)); |
- engine_->Init(key); |
+ scoped_ptr<crypto::HMAC> new_engine( |
+ new crypto::HMAC(crypto::HMAC::SHA256)); |
+ if (!new_engine->Init(key)) |
+ return; |
+ engine_.swap(new_engine); |
key_ = key; |
key_change_tick_ = GetCurrentTick(); |
} |
@@ -347,9 +350,12 @@ class InternalAuthGenerationService : public base::ThreadChecker { |
&InternalAuthGenerationService::GenerateNewKey); |
} |
- engine_.reset(new crypto::HMAC(crypto::HMAC::SHA256)); |
+ scoped_ptr<crypto::HMAC> new_engine( |
+ new crypto::HMAC(crypto::HMAC::SHA256)); |
std::string key = base::RandBytesAsString(kKeySizeInBytes); |
- engine_->Init(key); |
+ if (!new_engine->Init(key)) |
+ return; |
+ engine_.swap(new_engine); |
key_regeneration_tick_ = GetCurrentTick(); |
g_verification_service.Get().ChangeKey(key); |
std::fill(key.begin(), key.end(), 0); |