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

Unified Diff: chrome/browser/safe_browsing/prefix_set.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: rebase off of CL 744183002 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
« no previous file with comments | « chrome/browser/safe_browsing/prefix_set.h ('k') | chrome/browser/safe_browsing/prefix_set_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/safe_browsing/prefix_set.cc
diff --git a/chrome/browser/safe_browsing/prefix_set.cc b/chrome/browser/safe_browsing/prefix_set.cc
index 09c1a78f0ff83068c89f4effe9e91c3bbd8886f2..7cd69e99177d3a8d1512614690c541cf319869be 100644
--- a/chrome/browser/safe_browsing/prefix_set.cc
+++ b/chrome/browser/safe_browsing/prefix_set.cc
@@ -157,22 +157,23 @@ void PrefixSet::GetPrefixes(std::vector<SBPrefix>* prefixes) const {
}
// static
-scoped_ptr<PrefixSet> PrefixSet::LoadFile(const base::FilePath& filter_name) {
+scoped_ptr<const PrefixSet> PrefixSet::LoadFile(
+ const base::FilePath& filter_name) {
int64 size_64;
if (!base::GetFileSize(filter_name, &size_64))
- return scoped_ptr<PrefixSet>();
+ return nullptr;
using base::MD5Digest;
if (size_64 < static_cast<int64>(sizeof(FileHeader) + sizeof(MD5Digest)))
- return scoped_ptr<PrefixSet>();
+ return nullptr;
base::ScopedFILE file(base::OpenFile(filter_name, "rb"));
if (!file.get())
- return scoped_ptr<PrefixSet>();
+ return nullptr;
FileHeader header;
size_t read = fread(&header, sizeof(header), 1, file.get());
if (read != 1)
- return scoped_ptr<PrefixSet>();
+ return nullptr;
// The file looks valid, start building the digest.
base::MD5Context context;
@@ -181,15 +182,15 @@ scoped_ptr<PrefixSet> PrefixSet::LoadFile(const base::FilePath& filter_name) {
sizeof(header)));
if (header.magic != kMagic)
- return scoped_ptr<PrefixSet>();
+ return nullptr;
// Track version read to inform removal of support for older versions.
UMA_HISTOGRAM_SPARSE_SLOWLY("SB2.PrefixSetVersionRead", header.version);
if (header.version <= kDeprecatedVersion) {
- return scoped_ptr<PrefixSet>();
+ return nullptr;
} else if (header.version != kVersion) {
- return scoped_ptr<PrefixSet>();
+ return nullptr;
}
IndexVector index;
@@ -206,7 +207,7 @@ scoped_ptr<PrefixSet> PrefixSet::LoadFile(const base::FilePath& filter_name) {
const size_t expected_bytes = sizeof(header) +
index_bytes + deltas_bytes + full_hashes_bytes + sizeof(MD5Digest);
if (static_cast<int64>(expected_bytes) != size_64)
- return scoped_ptr<PrefixSet>();
+ return nullptr;
// Read the index vector. Herb Sutter indicates that vectors are
// guaranteed to be contiuguous, so reading to where element 0 lives
@@ -215,7 +216,7 @@ scoped_ptr<PrefixSet> PrefixSet::LoadFile(const base::FilePath& filter_name) {
index.resize(header.index_size);
read = fread(&(index[0]), sizeof(index[0]), index.size(), file.get());
if (read != index.size())
- return scoped_ptr<PrefixSet>();
+ return nullptr;
base::MD5Update(&context,
base::StringPiece(reinterpret_cast<char*>(&(index[0])),
index_bytes));
@@ -226,7 +227,7 @@ scoped_ptr<PrefixSet> PrefixSet::LoadFile(const base::FilePath& filter_name) {
deltas.resize(header.deltas_size);
read = fread(&(deltas[0]), sizeof(deltas[0]), deltas.size(), file.get());
if (read != deltas.size())
- return scoped_ptr<PrefixSet>();
+ return nullptr;
base::MD5Update(&context,
base::StringPiece(reinterpret_cast<char*>(&(deltas[0])),
deltas_bytes));
@@ -238,7 +239,7 @@ scoped_ptr<PrefixSet> PrefixSet::LoadFile(const base::FilePath& filter_name) {
read = fread(&(full_hashes[0]), sizeof(full_hashes[0]), full_hashes.size(),
file.get());
if (read != full_hashes.size())
- return scoped_ptr<PrefixSet>();
+ return nullptr;
base::MD5Update(&context,
base::StringPiece(
reinterpret_cast<char*>(&(full_hashes[0])),
@@ -251,13 +252,14 @@ scoped_ptr<PrefixSet> PrefixSet::LoadFile(const base::FilePath& filter_name) {
base::MD5Digest file_digest;
read = fread(&file_digest, sizeof(file_digest), 1, file.get());
if (read != 1)
- return scoped_ptr<PrefixSet>();
+ return nullptr;
if (0 != memcmp(&file_digest, &calculated_digest, sizeof(file_digest)))
- return scoped_ptr<PrefixSet>();
+ return nullptr;
// Steals vector contents using swap().
- return scoped_ptr<PrefixSet>(new PrefixSet(&index, &deltas, &full_hashes));
+ return make_scoped_ptr(
+ new PrefixSet(&index, &deltas, &full_hashes));
}
bool PrefixSet::WriteFile(const base::FilePath& filter_name) const {
@@ -369,7 +371,7 @@ PrefixSetBuilder::PrefixSetBuilder(const std::vector<SBPrefix>& prefixes)
PrefixSetBuilder::~PrefixSetBuilder() {
}
-scoped_ptr<PrefixSet> PrefixSetBuilder::GetPrefixSet(
+scoped_ptr<const PrefixSet> PrefixSetBuilder::GetPrefixSet(
const std::vector<SBFullHash>& hashes) {
DCHECK(prefix_set_.get());
@@ -389,7 +391,7 @@ scoped_ptr<PrefixSet> PrefixSetBuilder::GetPrefixSet(
return prefix_set_.Pass();
}
-scoped_ptr<PrefixSet> PrefixSetBuilder::GetPrefixSetNoHashes() {
+scoped_ptr<const PrefixSet> PrefixSetBuilder::GetPrefixSetNoHashes() {
return GetPrefixSet(std::vector<SBFullHash>()).Pass();
}
« no previous file with comments | « chrome/browser/safe_browsing/prefix_set.h ('k') | chrome/browser/safe_browsing/prefix_set_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698