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

Unified Diff: chrome/browser/safe_browsing/safe_browsing_database.cc

Issue 781613002: Make SafeBrowsingDatabase's PrefixSets only updatable by swapping a new one in. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@a2_threadchecks
Patch Set: Created 6 years 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
Index: chrome/browser/safe_browsing/safe_browsing_database.cc
diff --git a/chrome/browser/safe_browsing/safe_browsing_database.cc b/chrome/browser/safe_browsing/safe_browsing_database.cc
index a5de866781858abc3bc049c2e7a463f3dd214ea3..2537959bd2a13584004a0f7670e9a323a597f5bf 100644
--- a/chrome/browser/safe_browsing/safe_browsing_database.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_database.cc
@@ -696,7 +696,7 @@ bool SafeBrowsingDatabaseNew::ContainsUnwantedSoftwareUrl(
bool SafeBrowsingDatabaseNew::PrefixSetContainsUrl(
const GURL& url,
- scoped_ptr<safe_browsing::PrefixSet>* prefix_set_getter,
+ scoped_ptr<const safe_browsing::PrefixSet>* prefix_set_getter,
std::vector<SBPrefix>* prefix_hits,
std::vector<SBFullHashResult>* cache_hits) {
// This method is theoretically thread-safe but document that it is currently
@@ -726,7 +726,7 @@ bool SafeBrowsingDatabaseNew::ContainsBrowseUrlHashesForTesting(
bool SafeBrowsingDatabaseNew::PrefixSetContainsUrlHashes(
const std::vector<SBFullHash>& full_hashes,
- scoped_ptr<safe_browsing::PrefixSet>* prefix_set_getter,
+ scoped_ptr<const safe_browsing::PrefixSet>* prefix_set_getter,
std::vector<SBPrefix>* prefix_hits,
std::vector<SBFullHashResult>* cache_hits) {
// This method is theoretically thread-safe but document that it is currently
@@ -743,7 +743,7 @@ bool SafeBrowsingDatabaseNew::PrefixSetContainsUrlHashes(
// |prefix_set_getter| can only be accessed while holding |lookup_lock_| hence
// why it is passed as a parameter rather than passing the |prefix_set|
// directly.
- safe_browsing::PrefixSet* prefix_set = prefix_set_getter->get();
+ const safe_browsing::PrefixSet* prefix_set = prefix_set_getter->get();
if (!prefix_set)
return false;
@@ -1330,7 +1330,7 @@ int64 SafeBrowsingDatabaseNew::UpdateHashPrefixStore(
void SafeBrowsingDatabaseNew::UpdatePrefixSetUrlStore(
const base::FilePath& db_filename,
SafeBrowsingStore* url_store,
- scoped_ptr<safe_browsing::PrefixSet>* prefix_set,
+ scoped_ptr<const safe_browsing::PrefixSet>* prefix_set,
FailureType finish_failure_type,
FailureType write_failure_type) {
DCHECK(thread_checker_.CalledOnValidThread());
@@ -1369,7 +1369,7 @@ void SafeBrowsingDatabaseNew::UpdatePrefixSetUrlStore(
full_hash_results.push_back(add_full_hashes[i].full_hash);
}
- scoped_ptr<safe_browsing::PrefixSet> new_prefix_set(
+ scoped_ptr<const safe_browsing::PrefixSet> new_prefix_set(
builder.GetPrefixSet(full_hash_results));
// Swap in the newly built filter.
@@ -1382,8 +1382,6 @@ void SafeBrowsingDatabaseNew::UpdatePrefixSetUrlStore(
// Persist the prefix set to disk. Note: there is no need to lock since the
// only write to |*prefix_set| is on this thread (in the swap() above).
- // TODO(gab): Strengthen this requirement by design (const pointers) rather
- // than assumptions.
WritePrefixSet(db_filename, prefix_set->get(), write_failure_type);
// Gather statistics.
@@ -1422,13 +1420,13 @@ void SafeBrowsingDatabaseNew::UpdateSideEffectFreeWhitelistStore() {
RecordFailure(FAILURE_SIDE_EFFECT_FREE_WHITELIST_UPDATE_FINISH);
return;
}
- scoped_ptr<safe_browsing::PrefixSet>
- prefix_set(builder.GetPrefixSetNoHashes());
+ scoped_ptr<const safe_browsing::PrefixSet> new_prefix_set(
+ builder.GetPrefixSetNoHashes());
// Swap in the newly built prefix set.
{
base::AutoLock locked(lookup_lock_);
- side_effect_free_whitelist_prefix_set_.swap(prefix_set);
+ side_effect_free_whitelist_prefix_set_.swap(new_prefix_set);
}
const base::FilePath side_effect_free_whitelist_filename =
@@ -1511,7 +1509,7 @@ void SafeBrowsingDatabaseNew::OnHandleCorruptDatabase() {
// real error-handling.
void SafeBrowsingDatabaseNew::LoadPrefixSet(
const base::FilePath& db_filename,
- scoped_ptr<safe_browsing::PrefixSet>* prefix_set,
+ scoped_ptr<const safe_browsing::PrefixSet>* prefix_set,
FailureType read_failure_type) {
DCHECK(thread_checker_.CalledOnValidThread());
@@ -1622,7 +1620,7 @@ bool SafeBrowsingDatabaseNew::Delete() {
void SafeBrowsingDatabaseNew::WritePrefixSet(
const base::FilePath& db_filename,
- safe_browsing::PrefixSet* prefix_set,
+ const safe_browsing::PrefixSet* prefix_set,
FailureType write_failure_type) {
DCHECK(thread_checker_.CalledOnValidThread());

Powered by Google App Engine
This is Rietveld 408576698