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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
341 DownloadProtectionService* service, | 341 DownloadProtectionService* service, |
342 const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager, | 342 const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager, |
343 BinaryFeatureExtractor* binary_feature_extractor) | 343 BinaryFeatureExtractor* binary_feature_extractor) |
344 : item_(item), | 344 : item_(item), |
345 url_chain_(item->GetUrlChain()), | 345 url_chain_(item->GetUrlChain()), |
346 referrer_url_(item->GetReferrerUrl()), | 346 referrer_url_(item->GetReferrerUrl()), |
347 tab_url_(item->GetTabUrl()), | 347 tab_url_(item->GetTabUrl()), |
348 tab_referrer_url_(item->GetTabReferrerUrl()), | 348 tab_referrer_url_(item->GetTabReferrerUrl()), |
349 archived_executable_(false), | 349 archived_executable_(false), |
350 archive_is_valid_(ArchiveValid::UNSET), | 350 archive_is_valid_(ArchiveValid::UNSET), |
351 #if defined(OS_MACOSX) | |
352 disk_image_signature_(nullptr), | |
353 #endif | |
351 callback_(callback), | 354 callback_(callback), |
352 service_(service), | 355 service_(service), |
353 binary_feature_extractor_(binary_feature_extractor), | 356 binary_feature_extractor_(binary_feature_extractor), |
354 database_manager_(database_manager), | 357 database_manager_(database_manager), |
355 pingback_enabled_(service_->enabled()), | 358 pingback_enabled_(service_->enabled()), |
356 finished_(false), | 359 finished_(false), |
357 type_(ClientDownloadRequest::WIN_EXECUTABLE), | 360 type_(ClientDownloadRequest::WIN_EXECUTABLE), |
358 start_time_(base::TimeTicks::Now()), | 361 start_time_(base::TimeTicks::Now()), |
359 skipped_url_whitelist_(false), | 362 skipped_url_whitelist_(false), |
360 skipped_certificate_whitelist_(false), | 363 skipped_certificate_whitelist_(false), |
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
805 else | 808 else |
806 StartExtractFileFeatures(); | 809 StartExtractFileFeatures(); |
807 } | 810 } |
808 | 811 |
809 void OnDmgAnalysisFinished(const ArchiveAnalyzerResults& results) { | 812 void OnDmgAnalysisFinished(const ArchiveAnalyzerResults& results) { |
810 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 813 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
811 DCHECK_EQ(ClientDownloadRequest::MAC_EXECUTABLE, type_); | 814 DCHECK_EQ(ClientDownloadRequest::MAC_EXECUTABLE, type_); |
812 if (!service_) | 815 if (!service_) |
813 return; | 816 return; |
814 | 817 |
818 #if defined(OS_MACOSX) | |
Jialiu Lin
2017/06/28 00:23:34
You probably don't need the #if/#endif here, since
mortonm
2017/06/28 16:24:41
Done.
| |
819 if (results.signature_blob.size() > 0) { | |
820 disk_image_signature_ = std::unique_ptr<std::vector<uint8_t>>( | |
Jialiu Lin
2017/06/28 00:23:34
change "std::unique_ptr<std::vector<uint8_t>>(new
mortonm
2017/06/28 16:24:41
Done.
| |
821 new std::vector<uint8_t>(results.signature_blob)); | |
822 } | |
823 #endif | |
824 | |
815 // Even if !results.success, some of the DMG may have been parsed. | 825 // Even if !results.success, some of the DMG may have been parsed. |
816 archive_is_valid_ = | 826 archive_is_valid_ = |
817 (results.success ? ArchiveValid::VALID : ArchiveValid::INVALID); | 827 (results.success ? ArchiveValid::VALID : ArchiveValid::INVALID); |
818 archived_executable_ = results.has_executable; | 828 archived_executable_ = results.has_executable; |
819 archived_binary_.CopyFrom(results.archived_binary); | 829 archived_binary_.CopyFrom(results.archived_binary); |
820 DVLOG(1) << "DMG analysis has finished for " << item_->GetFullPath().value() | 830 DVLOG(1) << "DMG analysis has finished for " << item_->GetFullPath().value() |
821 << ", has_executable=" << results.has_executable | 831 << ", has_executable=" << results.has_executable |
822 << ", success=" << results.success; | 832 << ", success=" << results.success; |
823 | 833 |
824 int64_t uma_file_type = FileTypePolicies::GetInstance()->UmaValueForFile( | 834 int64_t uma_file_type = FileTypePolicies::GetInstance()->UmaValueForFile( |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1050 item_->GetUserData(kDownloadReferrerChainDataKey)); | 1060 item_->GetUserData(kDownloadReferrerChainDataKey)); |
1051 if (referrer_chain_data && | 1061 if (referrer_chain_data && |
1052 !referrer_chain_data->GetReferrerChain()->empty()) { | 1062 !referrer_chain_data->GetReferrerChain()->empty()) { |
1053 request.mutable_referrer_chain()->Swap( | 1063 request.mutable_referrer_chain()->Swap( |
1054 referrer_chain_data->GetReferrerChain()); | 1064 referrer_chain_data->GetReferrerChain()); |
1055 if (type_ == ClientDownloadRequest::SAMPLED_UNSUPPORTED_FILE) | 1065 if (type_ == ClientDownloadRequest::SAMPLED_UNSUPPORTED_FILE) |
1056 SafeBrowsingNavigationObserverManager::SanitizeReferrerChain( | 1066 SafeBrowsingNavigationObserverManager::SanitizeReferrerChain( |
1057 request.mutable_referrer_chain()); | 1067 request.mutable_referrer_chain()); |
1058 } | 1068 } |
1059 | 1069 |
1070 #if defined(OS_MACOSX) | |
1071 UMA_HISTOGRAM_BOOLEAN( | |
1072 "SBClientDownload." | |
1073 "DownloadFileHasDmgSignature", | |
1074 disk_image_signature_ != nullptr); | |
1075 | |
1076 if (disk_image_signature_) { | |
1077 request.set_udif_code_signature(disk_image_signature_->data(), | |
1078 disk_image_signature_->size()); | |
1079 } | |
1080 #endif | |
1081 | |
1060 if (archive_is_valid_ != ArchiveValid::UNSET) | 1082 if (archive_is_valid_ != ArchiveValid::UNSET) |
1061 request.set_archive_valid(archive_is_valid_ == ArchiveValid::VALID); | 1083 request.set_archive_valid(archive_is_valid_ == ArchiveValid::VALID); |
1062 request.mutable_signature()->CopyFrom(signature_info_); | 1084 request.mutable_signature()->CopyFrom(signature_info_); |
1063 if (image_headers_) | 1085 if (image_headers_) |
1064 request.set_allocated_image_headers(image_headers_.release()); | 1086 request.set_allocated_image_headers(image_headers_.release()); |
1065 if (archived_executable_) | 1087 if (archived_executable_) |
1066 request.mutable_archived_binary()->Swap(&archived_binary_); | 1088 request.mutable_archived_binary()->Swap(&archived_binary_); |
1067 if (!request.SerializeToString(&client_download_request_data_)) { | 1089 if (!request.SerializeToString(&client_download_request_data_)) { |
1068 FinishRequest(UNKNOWN, REASON_INVALID_REQUEST_PROTO); | 1090 FinishRequest(UNKNOWN, REASON_INVALID_REQUEST_PROTO); |
1069 return; | 1091 return; |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1245 GURL referrer_url_; | 1267 GURL referrer_url_; |
1246 // URL chain of redirects leading to (but not including) |tab_url|. | 1268 // URL chain of redirects leading to (but not including) |tab_url|. |
1247 std::vector<GURL> tab_redirects_; | 1269 std::vector<GURL> tab_redirects_; |
1248 // URL and referrer of the window the download was started from. | 1270 // URL and referrer of the window the download was started from. |
1249 GURL tab_url_; | 1271 GURL tab_url_; |
1250 GURL tab_referrer_url_; | 1272 GURL tab_referrer_url_; |
1251 | 1273 |
1252 bool archived_executable_; | 1274 bool archived_executable_; |
1253 ArchiveValid archive_is_valid_; | 1275 ArchiveValid archive_is_valid_; |
1254 | 1276 |
1277 #if defined(OS_MACOSX) | |
1278 std::unique_ptr<std::vector<uint8_t>> disk_image_signature_; | |
1279 #endif | |
1280 | |
1255 ClientDownloadRequest_SignatureInfo signature_info_; | 1281 ClientDownloadRequest_SignatureInfo signature_info_; |
1256 std::unique_ptr<ClientDownloadRequest_ImageHeaders> image_headers_; | 1282 std::unique_ptr<ClientDownloadRequest_ImageHeaders> image_headers_; |
1257 google::protobuf::RepeatedPtrField<ClientDownloadRequest_ArchivedBinary> | 1283 google::protobuf::RepeatedPtrField<ClientDownloadRequest_ArchivedBinary> |
1258 archived_binary_; | 1284 archived_binary_; |
1259 CheckDownloadCallback callback_; | 1285 CheckDownloadCallback callback_; |
1260 // Will be NULL if the request has been canceled. | 1286 // Will be NULL if the request has been canceled. |
1261 DownloadProtectionService* service_; | 1287 DownloadProtectionService* service_; |
1262 scoped_refptr<BinaryFeatureExtractor> binary_feature_extractor_; | 1288 scoped_refptr<BinaryFeatureExtractor> binary_feature_extractor_; |
1263 scoped_refptr<SafeBrowsingDatabaseManager> database_manager_; | 1289 scoped_refptr<SafeBrowsingDatabaseManager> database_manager_; |
1264 const bool pingback_enabled_; | 1290 const bool pingback_enabled_; |
(...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2012 out_request->mutable_referrer_chain()); | 2038 out_request->mutable_referrer_chain()); |
2013 UMA_HISTOGRAM_COUNTS_100( | 2039 UMA_HISTOGRAM_COUNTS_100( |
2014 "SafeBrowsing.ReferrerURLChainSize.PPAPIDownloadAttribution", | 2040 "SafeBrowsing.ReferrerURLChainSize.PPAPIDownloadAttribution", |
2015 out_request->referrer_chain_size()); | 2041 out_request->referrer_chain_size()); |
2016 UMA_HISTOGRAM_ENUMERATION( | 2042 UMA_HISTOGRAM_ENUMERATION( |
2017 "SafeBrowsing.ReferrerAttributionResult.PPAPIDownloadAttribution", result, | 2043 "SafeBrowsing.ReferrerAttributionResult.PPAPIDownloadAttribution", result, |
2018 SafeBrowsingNavigationObserverManager::ATTRIBUTION_FAILURE_TYPE_MAX); | 2044 SafeBrowsingNavigationObserverManager::ATTRIBUTION_FAILURE_TYPE_MAX); |
2019 } | 2045 } |
2020 | 2046 |
2021 } // namespace safe_browsing | 2047 } // namespace safe_browsing |
OLD | NEW |