Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Unified Diff: extensions/browser/content_hash_reader.cc

Issue 329303007: Fix several problems with the content verification code (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: responded to review comments Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/browser/content_hash_reader.h ('k') | extensions/browser/content_verifier.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/browser/content_hash_reader.cc
diff --git a/extensions/browser/content_hash_reader.cc b/extensions/browser/content_hash_reader.cc
index 06c8ef0ab791916f005085c9e5bc78886f7ff933..467fc3fa914d655f1a93745388bbe6e967e1e8a0 100644
--- a/extensions/browser/content_hash_reader.cc
+++ b/extensions/browser/content_hash_reader.cc
@@ -33,6 +33,8 @@ ContentHashReader::ContentHashReader(const std::string& extension_id,
relative_path_(relative_path),
key_(key),
status_(NOT_INITIALIZED),
+ have_verified_contents_(false),
+ have_computed_hashes_(false),
block_size_(0) {
}
@@ -52,10 +54,10 @@ bool ContentHashReader::Init() {
if (!verified_contents_->InitFrom(verified_contents_path, false) ||
!verified_contents_->valid_signature() ||
!verified_contents_->version().Equals(extension_version_) ||
- verified_contents_->extension_id() != extension_id_) {
- base::DeleteFile(verified_contents_path, false /* recursive */);
+ verified_contents_->extension_id() != extension_id_)
return false;
- }
+
+ have_verified_contents_ = true;
base::FilePath computed_hashes_path =
file_util::GetComputedHashesPath(extension_root_);
@@ -63,21 +65,24 @@ bool ContentHashReader::Init() {
return false;
ComputedHashes::Reader reader;
- if (!reader.InitFromFile(computed_hashes_path) ||
- !reader.GetHashes(relative_path_, &block_size_, &hashes_) ||
- block_size_ % crypto::kSHA256Length != 0) {
- base::DeleteFile(computed_hashes_path, false /* recursive */);
+ if (!reader.InitFromFile(computed_hashes_path))
+ return false;
+
+ have_computed_hashes_ = true;
+
+ if (!reader.GetHashes(relative_path_, &block_size_, &hashes_) ||
+ block_size_ % crypto::kSHA256Length != 0)
+ return false;
+
+ const std::string* expected_root =
+ verified_contents_->GetTreeHashRoot(relative_path_);
+ if (!expected_root)
return false;
- }
std::string root =
ComputeTreeHashRoot(hashes_, block_size_ / crypto::kSHA256Length);
- const std::string* expected_root = NULL;
- expected_root = verified_contents_->GetTreeHashRoot(relative_path_);
- if (expected_root && *expected_root != root) {
- base::DeleteFile(computed_hashes_path, false /* recursive */);
+ if (*expected_root != root)
return false;
- }
status_ = SUCCESS;
return true;
« no previous file with comments | « extensions/browser/content_hash_reader.h ('k') | extensions/browser/content_verifier.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698