| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/safe_browsing/download_protection_service.h" | 5 #include "chrome/browser/safe_browsing/download_protection_service.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 const DownloadProtectionService::CheckDownloadCallback& callback, | 230 const DownloadProtectionService::CheckDownloadCallback& callback, |
| 231 const scoped_refptr<SafeBrowsingUIManager>& ui_manager, | 231 const scoped_refptr<SafeBrowsingUIManager>& ui_manager, |
| 232 const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager) | 232 const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager) |
| 233 : DownloadSBClient(item, callback, ui_manager, | 233 : DownloadSBClient(item, callback, ui_manager, |
| 234 DOWNLOAD_URL_CHECKS_TOTAL, | 234 DOWNLOAD_URL_CHECKS_TOTAL, |
| 235 DOWNLOAD_URL_CHECKS_MALWARE), | 235 DOWNLOAD_URL_CHECKS_MALWARE), |
| 236 database_manager_(database_manager) { } | 236 database_manager_(database_manager) { } |
| 237 | 237 |
| 238 virtual void StartCheck() OVERRIDE { | 238 virtual void StartCheck() OVERRIDE { |
| 239 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 239 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 240 if (!database_manager_ || database_manager_->CheckDownloadUrl( | 240 if (!database_manager_.get() || |
| 241 url_chain_, this)) { | 241 database_manager_->CheckDownloadUrl(url_chain_, this)) { |
| 242 CheckDone(SB_THREAT_TYPE_SAFE); | 242 CheckDone(SB_THREAT_TYPE_SAFE); |
| 243 } else { | 243 } else { |
| 244 AddRef(); // SafeBrowsingService takes a pointer not a scoped_refptr. | 244 AddRef(); // SafeBrowsingService takes a pointer not a scoped_refptr. |
| 245 } | 245 } |
| 246 } | 246 } |
| 247 | 247 |
| 248 virtual bool IsDangerous(SBThreatType threat_type) const OVERRIDE { | 248 virtual bool IsDangerous(SBThreatType threat_type) const OVERRIDE { |
| 249 return threat_type == SB_THREAT_TYPE_BINARY_MALWARE_URL; | 249 return threat_type == SB_THREAT_TYPE_BINARY_MALWARE_URL; |
| 250 } | 250 } |
| 251 | 251 |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 if (!zipped_executable_) { | 544 if (!zipped_executable_) { |
| 545 PostFinishTask(SAFE, REASON_ARCHIVE_WITHOUT_BINARIES); | 545 PostFinishTask(SAFE, REASON_ARCHIVE_WITHOUT_BINARIES); |
| 546 return; | 546 return; |
| 547 } | 547 } |
| 548 OnFileFeatureExtractionDone(); | 548 OnFileFeatureExtractionDone(); |
| 549 } | 549 } |
| 550 | 550 |
| 551 void CheckWhitelists() { | 551 void CheckWhitelists() { |
| 552 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 552 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 553 DownloadCheckResultReason reason = REASON_MAX; | 553 DownloadCheckResultReason reason = REASON_MAX; |
| 554 if (!database_manager_) { | 554 if (!database_manager_.get()) { |
| 555 reason = REASON_SB_DISABLED; | 555 reason = REASON_SB_DISABLED; |
| 556 } else { | 556 } else { |
| 557 for (size_t i = 0; i < url_chain_.size(); ++i) { | 557 for (size_t i = 0; i < url_chain_.size(); ++i) { |
| 558 const GURL& url = url_chain_[i]; | 558 const GURL& url = url_chain_[i]; |
| 559 if (url.is_valid() && | 559 if (url.is_valid() && |
| 560 database_manager_->MatchDownloadWhitelistUrl(url)) { | 560 database_manager_->MatchDownloadWhitelistUrl(url)) { |
| 561 VLOG(2) << url << " is on the download whitelist."; | 561 VLOG(2) << url << " is on the download whitelist."; |
| 562 reason = REASON_WHITELISTED_URL; | 562 reason = REASON_WHITELISTED_URL; |
| 563 break; | 563 break; |
| 564 } | 564 } |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 for (int i = 1; i < chain.element_size(); ++i) { | 712 for (int i = 1; i < chain.element_size(); ++i) { |
| 713 scoped_refptr<net::X509Certificate> issuer = | 713 scoped_refptr<net::X509Certificate> issuer = |
| 714 net::X509Certificate::CreateFromBytes( | 714 net::X509Certificate::CreateFromBytes( |
| 715 chain.element(i).certificate().data(), | 715 chain.element(i).certificate().data(), |
| 716 chain.element(i).certificate().size()); | 716 chain.element(i).certificate().size()); |
| 717 if (!issuer.get()) { | 717 if (!issuer.get()) { |
| 718 return false; | 718 return false; |
| 719 } | 719 } |
| 720 std::vector<std::string> whitelist_strings; | 720 std::vector<std::string> whitelist_strings; |
| 721 DownloadProtectionService::GetCertificateWhitelistStrings( | 721 DownloadProtectionService::GetCertificateWhitelistStrings( |
| 722 *cert, *issuer, &whitelist_strings); | 722 *cert.get(), *issuer.get(), &whitelist_strings); |
| 723 for (size_t j = 0; j < whitelist_strings.size(); ++j) { | 723 for (size_t j = 0; j < whitelist_strings.size(); ++j) { |
| 724 if (database_manager_->MatchDownloadWhitelistString( | 724 if (database_manager_->MatchDownloadWhitelistString( |
| 725 whitelist_strings[j])) { | 725 whitelist_strings[j])) { |
| 726 VLOG(2) << "Certificate matched whitelist, cert=" | 726 VLOG(2) << "Certificate matched whitelist, cert=" |
| 727 << cert->subject().GetDisplayName() | 727 << cert->subject().GetDisplayName() |
| 728 << " issuer=" << issuer->subject().GetDisplayName(); | 728 << " issuer=" << issuer->subject().GetDisplayName(); |
| 729 return true; | 729 return true; |
| 730 } | 730 } |
| 731 } | 731 } |
| 732 cert = issuer; | 732 cert = issuer; |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 946 std::string url = kDownloadRequestUrl; | 946 std::string url = kDownloadRequestUrl; |
| 947 std::string api_key = google_apis::GetAPIKey(); | 947 std::string api_key = google_apis::GetAPIKey(); |
| 948 if (!api_key.empty()) { | 948 if (!api_key.empty()) { |
| 949 base::StringAppendF(&url, "?key=%s", | 949 base::StringAppendF(&url, "?key=%s", |
| 950 net::EscapeQueryParamValue(api_key, true).c_str()); | 950 net::EscapeQueryParamValue(api_key, true).c_str()); |
| 951 } | 951 } |
| 952 return url; | 952 return url; |
| 953 } | 953 } |
| 954 | 954 |
| 955 } // namespace safe_browsing | 955 } // namespace safe_browsing |
| OLD | NEW |