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

Side by Side Diff: extensions/browser/content_hash_fetcher.cc

Issue 585583003: Fix case-sensitivity problems in extension content verification (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: undo change to extension_protocols.cc Created 6 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/browser/content_hash_fetcher.h" 5 #include "extensions/browser/content_hash_fetcher.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/files/file_enumerator.h" 10 #include "base/files/file_enumerator.h"
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 // for each one. 372 // for each one.
373 ComputedHashes::Writer writer; 373 ComputedHashes::Writer writer;
374 for (SortedFilePathSet::iterator i = paths.begin(); i != paths.end(); ++i) { 374 for (SortedFilePathSet::iterator i = paths.begin(); i != paths.end(); ++i) {
375 if (IsCancelled()) 375 if (IsCancelled())
376 return false; 376 return false;
377 const base::FilePath& full_path = *i; 377 const base::FilePath& full_path = *i;
378 base::FilePath relative_path; 378 base::FilePath relative_path;
379 extension_path_.AppendRelativePath(full_path, &relative_path); 379 extension_path_.AppendRelativePath(full_path, &relative_path);
380 relative_path = relative_path.NormalizePathSeparatorsTo('/'); 380 relative_path = relative_path.NormalizePathSeparatorsTo('/');
381 381
382 const std::string* expected_root = 382 if (!verified_contents_->HasTreeHashRoot(relative_path))
383 verified_contents_->GetTreeHashRoot(relative_path);
384 if (!expected_root)
385 continue; 383 continue;
386 384
387 std::string contents; 385 std::string contents;
388 if (!base::ReadFileToString(full_path, &contents)) { 386 if (!base::ReadFileToString(full_path, &contents)) {
389 LOG(ERROR) << "Could not read " << full_path.MaybeAsASCII(); 387 LOG(ERROR) << "Could not read " << full_path.MaybeAsASCII();
390 continue; 388 continue;
391 } 389 }
392 390
393 // Iterate through taking the hash of each block of size (block_size_) of 391 // Iterate through taking the hash of each block of size (block_size_) of
394 // the file. 392 // the file.
395 std::vector<std::string> hashes; 393 std::vector<std::string> hashes;
396 ComputedHashes::ComputeHashesForContent(contents, block_size_, &hashes); 394 ComputedHashes::ComputeHashesForContent(contents, block_size_, &hashes);
397 std::string root = 395 std::string root =
398 ComputeTreeHashRoot(hashes, block_size_ / crypto::kSHA256Length); 396 ComputeTreeHashRoot(hashes, block_size_ / crypto::kSHA256Length);
399 if (expected_root && *expected_root != root) { 397 if (!verified_contents_->TreeHashRootEquals(relative_path, root)) {
400 VLOG(1) << "content mismatch for " << relative_path.AsUTF8Unsafe(); 398 VLOG(1) << "content mismatch for " << relative_path.AsUTF8Unsafe();
401 hash_mismatch_paths_.insert(relative_path); 399 hash_mismatch_paths_.insert(relative_path);
402 continue; 400 continue;
403 } 401 }
404 402
405 writer.AddHashes(relative_path, block_size_, hashes); 403 writer.AddHashes(relative_path, block_size_, hashes);
406 } 404 }
407 bool result = writer.WriteToFile(hashes_file); 405 bool result = writer.WriteToFile(hashes_file);
408 UMA_HISTOGRAM_TIMES("ExtensionContentHashFetcher.CreateHashesTime", 406 UMA_HISTOGRAM_TIMES("ExtensionContentHashFetcher.CreateHashesTime",
409 timer.Elapsed()); 407 timer.Elapsed());
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 496
499 for (JobMap::iterator i = jobs_.begin(); i != jobs_.end(); ++i) { 497 for (JobMap::iterator i = jobs_.begin(); i != jobs_.end(); ++i) {
500 if (i->second.get() == job) { 498 if (i->second.get() == job) {
501 jobs_.erase(i); 499 jobs_.erase(i);
502 break; 500 break;
503 } 501 }
504 } 502 }
505 } 503 }
506 504
507 } // namespace extensions 505 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | extensions/browser/content_hash_reader.cc » ('j') | extensions/browser/verified_contents.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698