diff options
author | mattm <mattm@chromium.org> | 2014-09-22 18:05:45 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-23 01:06:08 +0000 |
commit | 022138b539a8e8d11c5a93c159335dadba6c51aa (patch) | |
tree | 36ed7db7d5ba5cb9705c1127fc8a9e88e1679b90 /chrome/browser/safe_browsing/protocol_parser.cc | |
parent | bdc7051b27478d02b6d88ebaf709819ccbe47282 (diff) | |
download | chromium_src-022138b539a8e8d11c5a93c159335dadba6c51aa.zip chromium_src-022138b539a8e8d11c5a93c159335dadba6c51aa.tar.gz chromium_src-022138b539a8e8d11c5a93c159335dadba6c51aa.tar.bz2 |
Safebrowsing: Honor the metadata from malware fullhash results in SB API 3.0.
BUG=176648
Review URL: https://codereview.chromium.org/586793003
Cr-Commit-Position: refs/heads/master@{#296116}
Diffstat (limited to 'chrome/browser/safe_browsing/protocol_parser.cc')
-rw-r--r-- | chrome/browser/safe_browsing/protocol_parser.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/chrome/browser/safe_browsing/protocol_parser.cc b/chrome/browser/safe_browsing/protocol_parser.cc index 790dda5..05378c4 100644 --- a/chrome/browser/safe_browsing/protocol_parser.cc +++ b/chrome/browser/safe_browsing/protocol_parser.cc @@ -131,7 +131,9 @@ class BufferReader { DISALLOW_COPY_AND_ASSIGN(BufferReader); }; -bool ParseGetHashMetadata(size_t hash_count, BufferReader* reader) { +bool ParseGetHashMetadata(size_t hash_count, + BufferReader* reader, + std::vector<SBFullHashResult>* full_hashes) { for (size_t i = 0; i < hash_count; ++i) { base::StringPiece line; if (!reader->GetLine(&line)) @@ -144,6 +146,11 @@ bool ParseGetHashMetadata(size_t hash_count, BufferReader* reader) { const void* meta_data; if (!reader->RefData(&meta_data, meta_data_len)) return false; + + if (full_hashes) { + (*full_hashes)[full_hashes->size() - hash_count + i].metadata.assign( + reinterpret_cast<const char*>(meta_data), meta_data_len); + } } return true; } @@ -223,7 +230,7 @@ bool ParseGetHash(const char* chunk_data, // Ignore hash results from lists we don't recognize. if (full_hash.list_id < 0) { reader.Advance(hash_len * hash_count); - if (has_metadata && !ParseGetHashMetadata(hash_count, &reader)) + if (has_metadata && !ParseGetHashMetadata(hash_count, &reader, NULL)) return false; continue; } @@ -234,9 +241,7 @@ bool ParseGetHash(const char* chunk_data, full_hashes->push_back(full_hash); } - // Discard the metadata for now. - // TODO(mattm): handle the metadata (see crbug.com/176648). - if (has_metadata && !ParseGetHashMetadata(hash_count, &reader)) + if (has_metadata && !ParseGetHashMetadata(hash_count, &reader, full_hashes)) return false; } |