| Index: chrome/common/safe_browsing/download_protection_util.cc
|
| diff --git a/chrome/common/safe_browsing/download_protection_util.cc b/chrome/common/safe_browsing/download_protection_util.cc
|
| index 3358b893b1c90445d1e1468339a25e73348677ca..ab8630f801a9d29c6ae03d617d668e8c781b4ae2 100644
|
| --- a/chrome/common/safe_browsing/download_protection_util.cc
|
| +++ b/chrome/common/safe_browsing/download_protection_util.cc
|
| @@ -16,33 +16,64 @@ bool IsArchiveFile(const base::FilePath& file) {
|
| }
|
|
|
| bool IsBinaryFile(const base::FilePath& file) {
|
| - return (
|
| + const base::FilePath::CharType* kSupportedBinaryFileTypes[] = {
|
| // Executable extensions for MS Windows.
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".bas")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".bat")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".cab")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".cmd")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".com")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".exe")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".hta")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".msi")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".pif")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".reg")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".scr")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".url")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".vb")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".vbs")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".website")) ||
|
| + FILE_PATH_LITERAL(".cab"),
|
| + FILE_PATH_LITERAL(".cmd"),
|
| + FILE_PATH_LITERAL(".com"),
|
| + FILE_PATH_LITERAL(".dll"),
|
| + FILE_PATH_LITERAL(".exe"),
|
| + FILE_PATH_LITERAL(".msc"),
|
| + FILE_PATH_LITERAL(".msi"),
|
| + FILE_PATH_LITERAL(".msp"),
|
| + FILE_PATH_LITERAL(".mst"),
|
| + FILE_PATH_LITERAL(".pif"),
|
| + FILE_PATH_LITERAL(".scr"),
|
| + // Not binary, but still contain executable code, or can be used to launch
|
| + // other executables.
|
| + FILE_PATH_LITERAL(".bas"),
|
| + FILE_PATH_LITERAL(".bat"),
|
| + FILE_PATH_LITERAL(".hta"),
|
| + FILE_PATH_LITERAL(".js"),
|
| + FILE_PATH_LITERAL(".jse"),
|
| + FILE_PATH_LITERAL(".mht"),
|
| + FILE_PATH_LITERAL(".mhtml"),
|
| + FILE_PATH_LITERAL(".msh"),
|
| + FILE_PATH_LITERAL(".msh1"),
|
| + FILE_PATH_LITERAL(".msh1xml"),
|
| + FILE_PATH_LITERAL(".msh2"),
|
| + FILE_PATH_LITERAL(".msh2xml"),
|
| + FILE_PATH_LITERAL(".mshxml"),
|
| + FILE_PATH_LITERAL(".ps1"),
|
| + FILE_PATH_LITERAL(".ps1xml"),
|
| + FILE_PATH_LITERAL(".ps2"),
|
| + FILE_PATH_LITERAL(".ps2xml"),
|
| + FILE_PATH_LITERAL(".psc1"),
|
| + FILE_PATH_LITERAL(".psc2"),
|
| + FILE_PATH_LITERAL(".reg"),
|
| + FILE_PATH_LITERAL(".scf"),
|
| + FILE_PATH_LITERAL(".sct"),
|
| + FILE_PATH_LITERAL(".url"),
|
| + FILE_PATH_LITERAL(".vb"),
|
| + FILE_PATH_LITERAL(".vbe"),
|
| + FILE_PATH_LITERAL(".vbs"),
|
| + FILE_PATH_LITERAL(".website"),
|
| + FILE_PATH_LITERAL(".wsf"),
|
| // Chrome extensions and android APKs are also reported.
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".crx")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".apk")) ||
|
| + FILE_PATH_LITERAL(".apk"),
|
| + FILE_PATH_LITERAL(".crx"),
|
| // Mac extensions.
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".dmg")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".pkg")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".osx")) ||
|
| - file.MatchesExtension(FILE_PATH_LITERAL(".app")) ||
|
| - // Archives _may_ contain binaries, we'll check in ExtractFileFeatures.
|
| - IsArchiveFile(file));
|
| + FILE_PATH_LITERAL(".app"),
|
| + FILE_PATH_LITERAL(".dmg"),
|
| + FILE_PATH_LITERAL(".osx"),
|
| + FILE_PATH_LITERAL(".pkg"),
|
| + };
|
| + for (const auto& extension : kSupportedBinaryFileTypes)
|
| + if (file.MatchesExtension(extension))
|
| + return true;
|
| +
|
| + // Archives _may_ contain binaries, we'll check in ExtractFileFeatures.
|
| + return IsArchiveFile(file);
|
| }
|
|
|
| ClientDownloadRequest::DownloadType GetDownloadType(
|
|
|