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 |