| 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/common/safe_browsing/download_protection_util.h" | 5 #include "chrome/common/safe_browsing/download_protection_util.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 EXTENSION_XAR, | 261 EXTENSION_XAR, |
| 262 EXTENSION_XXE, | 262 EXTENSION_XXE, |
| 263 EXTENSION_ZIPX, | 263 EXTENSION_ZIPX, |
| 264 EXTENSION_ZPAQ, | 264 EXTENSION_ZPAQ, |
| 265 EXTENSION_RELS, | 265 EXTENSION_RELS, |
| 266 EXTENSION_MSG, | 266 EXTENSION_MSG, |
| 267 EXTENSION_EML, | 267 EXTENSION_EML, |
| 268 EXTENSION_RTF, | 268 EXTENSION_RTF, |
| 269 EXTENSION_VHDX, | 269 EXTENSION_VHDX, |
| 270 EXTENSION_SEARCH_MS, | 270 EXTENSION_SEARCH_MS, |
| 271 EXTENSION_IMG, |
| 272 EXTENSION_SMI, |
| 271 | 273 |
| 272 // New values go above this one. | 274 // New values go above this one. |
| 273 EXTENSION_MAX | 275 EXTENSION_MAX |
| 274 }; | 276 }; |
| 275 | 277 |
| 276 struct SafeBrowsingFiletype { | 278 struct SafeBrowsingFiletype { |
| 277 const base::FilePath::CharType* const extension; | 279 const base::FilePath::CharType* const extension; |
| 278 int uma_value; | 280 int uma_value; |
| 279 bool is_supported_binary; | 281 bool is_supported_binary; |
| 280 bool is_archive; | 282 bool is_archive; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 {FILE_PATH_LITERAL(".fxp"), EXTENSION_FXP, true, false}, | 334 {FILE_PATH_LITERAL(".fxp"), EXTENSION_FXP, true, false}, |
| 333 {FILE_PATH_LITERAL(".gadget"), EXTENSION_GADGET, true, false}, | 335 {FILE_PATH_LITERAL(".gadget"), EXTENSION_GADGET, true, false}, |
| 334 {FILE_PATH_LITERAL(".grp"), EXTENSION_GRP, true, false}, | 336 {FILE_PATH_LITERAL(".grp"), EXTENSION_GRP, true, false}, |
| 335 {FILE_PATH_LITERAL(".gz"), EXTENSION_GZ, true, true}, | 337 {FILE_PATH_LITERAL(".gz"), EXTENSION_GZ, true, true}, |
| 336 {FILE_PATH_LITERAL(".gzip"), EXTENSION_GZIP, true, true}, | 338 {FILE_PATH_LITERAL(".gzip"), EXTENSION_GZIP, true, true}, |
| 337 {FILE_PATH_LITERAL(".hfs"), EXTENSION_HFS, true, true}, | 339 {FILE_PATH_LITERAL(".hfs"), EXTENSION_HFS, true, true}, |
| 338 {FILE_PATH_LITERAL(".hlp"), EXTENSION_HLP, true, false}, | 340 {FILE_PATH_LITERAL(".hlp"), EXTENSION_HLP, true, false}, |
| 339 {FILE_PATH_LITERAL(".hqx"), EXTENSION_HQX, true, true}, | 341 {FILE_PATH_LITERAL(".hqx"), EXTENSION_HQX, true, true}, |
| 340 {FILE_PATH_LITERAL(".hta"), EXTENSION_HTA, true, false}, | 342 {FILE_PATH_LITERAL(".hta"), EXTENSION_HTA, true, false}, |
| 341 {FILE_PATH_LITERAL(".htt"), EXTENSION_HTT, true, false}, | 343 {FILE_PATH_LITERAL(".htt"), EXTENSION_HTT, true, false}, |
| 344 {FILE_PATH_LITERAL(".img"), EXTENSION_IMG, true, false}, |
| 342 {FILE_PATH_LITERAL(".inf"), EXTENSION_INF, true, false}, | 345 {FILE_PATH_LITERAL(".inf"), EXTENSION_INF, true, false}, |
| 343 {FILE_PATH_LITERAL(".ini"), EXTENSION_INI, true, false}, | 346 {FILE_PATH_LITERAL(".ini"), EXTENSION_INI, true, false}, |
| 344 {FILE_PATH_LITERAL(".ins"), EXTENSION_INS, true, false}, | 347 {FILE_PATH_LITERAL(".ins"), EXTENSION_INS, true, false}, |
| 345 {FILE_PATH_LITERAL(".inx"), EXTENSION_INX, false, false}, // UMA only. | 348 {FILE_PATH_LITERAL(".inx"), EXTENSION_INX, false, false}, // UMA only. |
| 346 {FILE_PATH_LITERAL(".ipa"), EXTENSION_IPA, false, false}, // UMA only. | 349 {FILE_PATH_LITERAL(".ipa"), EXTENSION_IPA, false, false}, // UMA only. |
| 347 {FILE_PATH_LITERAL(".iso"), EXTENSION_ISO, true, true}, | 350 {FILE_PATH_LITERAL(".iso"), EXTENSION_ISO, true, true}, |
| 348 {FILE_PATH_LITERAL(".isp"), EXTENSION_ISP, true, false}, | 351 {FILE_PATH_LITERAL(".isp"), EXTENSION_ISP, true, false}, |
| 349 {FILE_PATH_LITERAL(".isu"), EXTENSION_ISU, false, false}, // UMA only. | 352 {FILE_PATH_LITERAL(".isu"), EXTENSION_ISU, false, false}, // UMA only. |
| 350 {FILE_PATH_LITERAL(".jar"), EXTENSION_JAR, true, false}, | 353 {FILE_PATH_LITERAL(".jar"), EXTENSION_JAR, true, false}, |
| 351 {FILE_PATH_LITERAL(".jnlp"), EXTENSION_JNLP, true, false}, | 354 {FILE_PATH_LITERAL(".jnlp"), EXTENSION_JNLP, true, false}, |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 {FILE_PATH_LITERAL(".rtf"), EXTENSION_RTF, false, false}, // UMA only. | 470 {FILE_PATH_LITERAL(".rtf"), EXTENSION_RTF, false, false}, // UMA only. |
| 468 {FILE_PATH_LITERAL(".scf"), EXTENSION_SCF, true, false}, | 471 {FILE_PATH_LITERAL(".scf"), EXTENSION_SCF, true, false}, |
| 469 {FILE_PATH_LITERAL(".scr"), EXTENSION_SCR, true, false}, | 472 {FILE_PATH_LITERAL(".scr"), EXTENSION_SCR, true, false}, |
| 470 {FILE_PATH_LITERAL(".sct"), EXTENSION_SCT, true, false}, | 473 {FILE_PATH_LITERAL(".sct"), EXTENSION_SCT, true, false}, |
| 471 {FILE_PATH_LITERAL(".search-ms"), EXTENSION_SEARCH_MS, true, false}, | 474 {FILE_PATH_LITERAL(".search-ms"), EXTENSION_SEARCH_MS, true, false}, |
| 472 {FILE_PATH_LITERAL(".sh"), EXTENSION_SH, true, false}, | 475 {FILE_PATH_LITERAL(".sh"), EXTENSION_SH, true, false}, |
| 473 {FILE_PATH_LITERAL(".shar"), EXTENSION_SHAR, true, false}, | 476 {FILE_PATH_LITERAL(".shar"), EXTENSION_SHAR, true, false}, |
| 474 {FILE_PATH_LITERAL(".shb"), EXTENSION_SHB, true, false}, | 477 {FILE_PATH_LITERAL(".shb"), EXTENSION_SHB, true, false}, |
| 475 {FILE_PATH_LITERAL(".shs"), EXTENSION_SHS, true, false}, | 478 {FILE_PATH_LITERAL(".shs"), EXTENSION_SHS, true, false}, |
| 476 {FILE_PATH_LITERAL(".slp"), EXTENSION_SLP, true, true}, | 479 {FILE_PATH_LITERAL(".slp"), EXTENSION_SLP, true, true}, |
| 480 {FILE_PATH_LITERAL(".smi"), EXTENSION_SMI, true, false}, |
| 477 {FILE_PATH_LITERAL(".spl"), EXTENSION_SPL, true, false}, | 481 {FILE_PATH_LITERAL(".spl"), EXTENSION_SPL, true, false}, |
| 478 {FILE_PATH_LITERAL(".squashfs"), EXTENSION_SQUASHFS, true, true}, | 482 {FILE_PATH_LITERAL(".squashfs"), EXTENSION_SQUASHFS, true, true}, |
| 479 {FILE_PATH_LITERAL(".svg"), EXTENSION_SVG, true, false}, | 483 {FILE_PATH_LITERAL(".svg"), EXTENSION_SVG, true, false}, |
| 480 {FILE_PATH_LITERAL(".swf"), EXTENSION_SWF, true, false}, | 484 {FILE_PATH_LITERAL(".swf"), EXTENSION_SWF, true, false}, |
| 481 {FILE_PATH_LITERAL(".swm"), EXTENSION_SWM, true, true}, | 485 {FILE_PATH_LITERAL(".swm"), EXTENSION_SWM, true, true}, |
| 482 {FILE_PATH_LITERAL(".sys"), EXTENSION_SYS, true, false}, | 486 {FILE_PATH_LITERAL(".sys"), EXTENSION_SYS, true, false}, |
| 483 {FILE_PATH_LITERAL(".tar"), EXTENSION_TAR, true, true}, | 487 {FILE_PATH_LITERAL(".tar"), EXTENSION_TAR, true, true}, |
| 484 {FILE_PATH_LITERAL(".taz"), EXTENSION_TAZ, true, true}, | 488 {FILE_PATH_LITERAL(".taz"), EXTENSION_TAZ, true, true}, |
| 485 {FILE_PATH_LITERAL(".tbz"), EXTENSION_TBZ, true, true}, | 489 {FILE_PATH_LITERAL(".tbz"), EXTENSION_TBZ, true, true}, |
| 486 {FILE_PATH_LITERAL(".tbz2"), EXTENSION_TBZ2, true, true}, | 490 {FILE_PATH_LITERAL(".tbz2"), EXTENSION_TBZ2, true, true}, |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 585 return ClientDownloadRequest::CHROME_EXTENSION; | 589 return ClientDownloadRequest::CHROME_EXTENSION; |
| 586 else if (file.MatchesExtension(FILE_PATH_LITERAL(".zip"))) | 590 else if (file.MatchesExtension(FILE_PATH_LITERAL(".zip"))) |
| 587 // DownloadProtectionService doesn't send a ClientDownloadRequest for ZIP | 591 // DownloadProtectionService doesn't send a ClientDownloadRequest for ZIP |
| 588 // files unless they contain either executables or archives. The resulting | 592 // files unless they contain either executables or archives. The resulting |
| 589 // DownloadType is either ZIPPED_EXECUTABLE or ZIPPED_ARCHIVE respectively. | 593 // DownloadType is either ZIPPED_EXECUTABLE or ZIPPED_ARCHIVE respectively. |
| 590 // This function will return ZIPPED_EXECUTABLE for ZIP files as a | 594 // This function will return ZIPPED_EXECUTABLE for ZIP files as a |
| 591 // placeholder. The correct DownloadType will be determined based on the | 595 // placeholder. The correct DownloadType will be determined based on the |
| 592 // result of analyzing the ZIP file. | 596 // result of analyzing the ZIP file. |
| 593 return ClientDownloadRequest::ZIPPED_EXECUTABLE; | 597 return ClientDownloadRequest::ZIPPED_EXECUTABLE; |
| 594 else if (file.MatchesExtension(FILE_PATH_LITERAL(".dmg")) || | 598 else if (file.MatchesExtension(FILE_PATH_LITERAL(".dmg")) || |
| 599 file.MatchesExtension(FILE_PATH_LITERAL(".img")) || |
| 600 file.MatchesExtension(FILE_PATH_LITERAL(".iso")) || |
| 595 file.MatchesExtension(FILE_PATH_LITERAL(".pkg")) || | 601 file.MatchesExtension(FILE_PATH_LITERAL(".pkg")) || |
| 602 file.MatchesExtension(FILE_PATH_LITERAL(".smi")) || |
| 596 file.MatchesExtension(FILE_PATH_LITERAL(".osx")) || | 603 file.MatchesExtension(FILE_PATH_LITERAL(".osx")) || |
| 597 file.MatchesExtension(FILE_PATH_LITERAL(".app"))) | 604 file.MatchesExtension(FILE_PATH_LITERAL(".app"))) |
| 598 return ClientDownloadRequest::MAC_EXECUTABLE; | 605 return ClientDownloadRequest::MAC_EXECUTABLE; |
| 599 else if (IsArchiveFile(file)) | 606 else if (IsArchiveFile(file)) |
| 600 return ClientDownloadRequest::ARCHIVE; | 607 return ClientDownloadRequest::ARCHIVE; |
| 601 return ClientDownloadRequest::WIN_EXECUTABLE; | 608 return ClientDownloadRequest::WIN_EXECUTABLE; |
| 602 } | 609 } |
| 603 | 610 |
| 604 int GetSBClientDownloadExtensionValueForUMA(const base::FilePath& file) { | 611 int GetSBClientDownloadExtensionValueForUMA(const base::FilePath& file) { |
| 605 return GetFileType(file).uma_value; | 612 return GetFileType(file).uma_value; |
| 606 } | 613 } |
| 607 | 614 |
| 608 } // namespace download_protection_util | 615 } // namespace download_protection_util |
| 609 } // namespace safe_browsing | 616 } // namespace safe_browsing |
| OLD | NEW |