Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Unified Diff: chrome/common/safe_browsing/download_protection_util.cc

Issue 1979153002: Use FileTypePolicies for is_archive and is_supported classifications. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@split_by_platform
Patch Set: Fix comment, per asanka's review Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 d6b35ce4510dcb83c6cc6e493721efd7a03b5e65..25bb01bd6ad0d37ab70ad9095cefb2b4bcb10403 100644
--- a/chrome/common/safe_browsing/download_protection_util.cc
+++ b/chrome/common/safe_browsing/download_protection_util.cc
@@ -9,608 +9,15 @@
#include "base/logging.h"
#include "base/macros.h"
#include "base/strings/string_util.h"
+#include "chrome/common/safe_browsing/file_type_policies.h"
namespace safe_browsing {
namespace download_protection_util {
-namespace {
-
-// This enum matches the SBClientDownloadExtensions enum in histograms.xml. If
-// you are adding a value here, you should also add to the enum definition in
-// histograms.xml. Additions only at the end just in front of EXTENSION_MAX,
-// natch.
-enum SBClientDownloadExtensions {
- EXTENSION_EXE,
- EXTENSION_MSI,
- EXTENSION_CAB,
- EXTENSION_SYS,
- EXTENSION_SCR,
- EXTENSION_DRV,
- EXTENSION_BAT,
- EXTENSION_ZIP,
- EXTENSION_RAR,
- EXTENSION_DLL,
- EXTENSION_PIF,
- EXTENSION_COM,
- EXTENSION_JAR,
- EXTENSION_CLASS,
- EXTENSION_PDF,
- EXTENSION_VB,
- EXTENSION_REG,
- EXTENSION_GRP,
- EXTENSION_OTHER, // The "other" bucket. This is in the middle of the enum
- // due to historical reasons.
- EXTENSION_CRX,
- EXTENSION_APK,
- EXTENSION_DMG,
- EXTENSION_PKG,
- EXTENSION_TORRENT,
- EXTENSION_WEBSITE,
- EXTENSION_URL,
- EXTENSION_VBE,
- EXTENSION_VBS,
- EXTENSION_JS,
- EXTENSION_JSE,
- EXTENSION_MHT,
- EXTENSION_MHTML,
- EXTENSION_MSC,
- EXTENSION_MSP,
- EXTENSION_MST,
- EXTENSION_BAS,
- EXTENSION_HTA,
- EXTENSION_MSH,
- EXTENSION_MSH1,
- EXTENSION_MSH1XML,
- EXTENSION_MSH2,
- EXTENSION_MSH2XML,
- EXTENSION_MSHXML,
- EXTENSION_PS1,
- EXTENSION_PS1XML,
- EXTENSION_PS2,
- EXTENSION_PS2XML,
- EXTENSION_PSC1,
- EXTENSION_PSC2,
- EXTENSION_SCF,
- EXTENSION_SCT,
- EXTENSION_WSF,
- EXTENSION_7Z,
- EXTENSION_XZ,
- EXTENSION_GZ,
- EXTENSION_TGZ,
- EXTENSION_BZ2,
- EXTENSION_TAR,
- EXTENSION_ARJ,
- EXTENSION_LZH,
- EXTENSION_LHA,
- EXTENSION_WIM,
- EXTENSION_Z,
- EXTENSION_LZMA,
- EXTENSION_CPIO,
- EXTENSION_CMD,
- EXTENSION_APP,
- EXTENSION_OSX,
- EXTENSION_SWF,
- EXTENSION_SPL,
- EXTENSION_APPLICATION,
- EXTENSION_ASP,
- EXTENSION_ASX,
- EXTENSION_CFG,
- EXTENSION_CHI,
- EXTENSION_CHM,
- EXTENSION_CPL,
- EXTENSION_FXP,
- EXTENSION_HLP,
- EXTENSION_HTT,
- EXTENSION_INF,
- EXTENSION_INI,
- EXTENSION_INS,
- EXTENSION_ISP,
- EXTENSION_LNK,
- EXTENSION_LOCAL,
- EXTENSION_MANIFEST,
- EXTENSION_MAU,
- EXTENSION_MMC,
- EXTENSION_MOF,
- EXTENSION_OCX,
- EXTENSION_OPS,
- EXTENSION_PCD,
- EXTENSION_PLG,
- EXTENSION_PRF,
- EXTENSION_PRG,
- EXTENSION_PST,
- EXTENSION_CRT,
- EXTENSION_ADE,
- EXTENSION_ADP,
- EXTENSION_MAD,
- EXTENSION_MAF,
- EXTENSION_MAG,
- EXTENSION_MAM,
- EXTENSION_MAQ,
- EXTENSION_MAR,
- EXTENSION_MAS,
- EXTENSION_MAT,
- EXTENSION_MAV,
- EXTENSION_MAW,
- EXTENSION_MDA,
- EXTENSION_MDB,
- EXTENSION_MDE,
- EXTENSION_MDT,
- EXTENSION_MDW,
- EXTENSION_MDZ,
- EXTENSION_SHB,
- EXTENSION_SHS,
- EXTENSION_VSD,
- EXTENSION_VSMACROS,
- EXTENSION_VSS,
- EXTENSION_VST,
- EXTENSION_VSW,
- EXTENSION_WS,
- EXTENSION_WSC,
- EXTENSION_WSH,
- EXTENSION_XBAP,
- EXTENSION_XNK,
- EXTENSION_JNLP,
- EXTENSION_PL,
- EXTENSION_PY,
- EXTENSION_PYC,
- EXTENSION_PYW,
- EXTENSION_RB,
- EXTENSION_BASH,
- EXTENSION_CSH,
- EXTENSION_KSH,
- EXTENSION_SH,
- EXTENSION_SHAR,
- EXTENSION_TCSH,
- EXTENSION_COMMAND,
- EXTENSION_DEB,
- EXTENSION_RPM,
- EXTENSION_DEX,
- EXTENSION_APPREF_MS,
- EXTENSION_GADGET,
- EXTENSION_EFI,
- EXTENSION_FON,
- EXTENSION_BZIP2,
- EXTENSION_GZIP,
- EXTENSION_TAZ,
- EXTENSION_TBZ,
- EXTENSION_TBZ2,
- EXTENSION_PARTIAL,
- EXTENSION_SVG,
- EXTENSION_XML,
- EXTENSION_XRM_MS,
- EXTENSION_XSL,
- EXTENSION_ACTION,
- EXTENSION_BIN,
- EXTENSION_INX,
- EXTENSION_IPA,
- EXTENSION_ISU,
- EXTENSION_JOB,
- EXTENSION_OUT,
- EXTENSION_PAD,
- EXTENSION_PAF,
- EXTENSION_RGS,
- EXTENSION_U3P,
- EXTENSION_VBSCRIPT,
- EXTENSION_WORKFLOW,
- EXTENSION_001,
- EXTENSION_ACE,
- EXTENSION_ARC,
- EXTENSION_B64,
- EXTENSION_BALZ,
- EXTENSION_BHX,
- EXTENSION_BZ,
- EXTENSION_FAT,
- EXTENSION_HFS,
- EXTENSION_HQX,
- EXTENSION_ISO,
- EXTENSION_LPAQ1,
- EXTENSION_LPAQ5,
- EXTENSION_LPAQ8,
- EXTENSION_MIM,
- EXTENSION_NTFS,
- EXTENSION_PAQ8F,
- EXTENSION_PAQ8JD,
- EXTENSION_PAQ8L,
- EXTENSION_PAQ8O,
- EXTENSION_PEA,
- EXTENSION_PET,
- EXTENSION_PUP,
- EXTENSION_QUAD,
- EXTENSION_R00,
- EXTENSION_R01,
- EXTENSION_R02,
- EXTENSION_R03,
- EXTENSION_R04,
- EXTENSION_R05,
- EXTENSION_R06,
- EXTENSION_R07,
- EXTENSION_R08,
- EXTENSION_R09,
- EXTENSION_R10,
- EXTENSION_R11,
- EXTENSION_R12,
- EXTENSION_R13,
- EXTENSION_R14,
- EXTENSION_R15,
- EXTENSION_R16,
- EXTENSION_R17,
- EXTENSION_R18,
- EXTENSION_R19,
- EXTENSION_R20,
- EXTENSION_R21,
- EXTENSION_R22,
- EXTENSION_R23,
- EXTENSION_R24,
- EXTENSION_R25,
- EXTENSION_R26,
- EXTENSION_R27,
- EXTENSION_R28,
- EXTENSION_R29,
- EXTENSION_SLP,
- EXTENSION_SQUASHFS,
- EXTENSION_SWM,
- EXTENSION_TPZ,
- EXTENSION_TXZ,
- EXTENSION_TZ,
- EXTENSION_UDF,
- EXTENSION_UU,
- EXTENSION_UUE,
- EXTENSION_VHD,
- EXTENSION_VMDK,
- EXTENSION_WRC,
- EXTENSION_XAR,
- EXTENSION_XXE,
- EXTENSION_ZIPX,
- EXTENSION_ZPAQ,
- EXTENSION_RELS,
- EXTENSION_MSG,
- EXTENSION_EML,
- EXTENSION_RTF,
- EXTENSION_VHDX,
- EXTENSION_SEARCH_MS,
- EXTENSION_IMG,
- EXTENSION_SMI,
- EXTENSION_SPARSEBUNDLE,
- EXTENSION_SPARSEIMAGE,
- EXTENSION_CDR,
- EXTENSION_DMGPART,
- EXTENSION_DVDR,
- EXTENSION_DART,
- EXTENSION_DC42,
- EXTENSION_DISKCOPY42,
- EXTENSION_IMGPART,
- EXTENSION_NDIF,
- EXTENSION_UDIF,
- EXTENSION_TOAST,
-
- // New values go above this one.
- EXTENSION_MAX
-};
-
-static_assert(EXTENSION_TOAST + 1 == EXTENSION_MAX,
- "You must add new types to download_file_types.asciipb as "
- "well.");
-
-struct SafeBrowsingFiletype {
- const base::FilePath::CharType* const extension;
- int uma_value;
- bool is_supported_binary;
- bool is_archive;
-};
-
-const SafeBrowsingFiletype kSafeBrowsingFileTypes[] = {
- // KEEP THIS LIST SORTED!
- {FILE_PATH_LITERAL(".001"), EXTENSION_001, true, true},
- {FILE_PATH_LITERAL(".7z"), EXTENSION_7Z, true, true},
- {FILE_PATH_LITERAL(".ace"), EXTENSION_ACE, true, true},
- {FILE_PATH_LITERAL(".action"), EXTENSION_ACTION, false, false}, // UMA.
- {FILE_PATH_LITERAL(".ade"), EXTENSION_ADE, true, false},
- {FILE_PATH_LITERAL(".adp"), EXTENSION_ADP, true, false},
- {FILE_PATH_LITERAL(".apk"), EXTENSION_APK, true, false},
- {FILE_PATH_LITERAL(".app"), EXTENSION_APP, true, false},
- {FILE_PATH_LITERAL(".application"), EXTENSION_APPLICATION, true, false},
- {FILE_PATH_LITERAL(".appref-ms"), EXTENSION_APPREF_MS, true, false},
- {FILE_PATH_LITERAL(".arc"), EXTENSION_ARC, true, true},
- {FILE_PATH_LITERAL(".arj"), EXTENSION_ARJ, true, true},
- {FILE_PATH_LITERAL(".asp"), EXTENSION_ASP, true, false},
- {FILE_PATH_LITERAL(".asx"), EXTENSION_ASX, true, false},
- {FILE_PATH_LITERAL(".b64"), EXTENSION_B64, true, true},
- {FILE_PATH_LITERAL(".balz"), EXTENSION_BALZ, true, true},
- {FILE_PATH_LITERAL(".bas"), EXTENSION_BAS, true, false},
- {FILE_PATH_LITERAL(".bash"), EXTENSION_BASH, true, false},
- {FILE_PATH_LITERAL(".bat"), EXTENSION_BAT, true, false},
- {FILE_PATH_LITERAL(".bhx"), EXTENSION_BHX, true, true},
- {FILE_PATH_LITERAL(".bin"), EXTENSION_BIN, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".bz"), EXTENSION_BZ, true, true},
- {FILE_PATH_LITERAL(".bz2"), EXTENSION_BZ2, true, true},
- {FILE_PATH_LITERAL(".bzip2"), EXTENSION_BZIP2, true, true},
- {FILE_PATH_LITERAL(".cab"), EXTENSION_CAB, true, true},
- {FILE_PATH_LITERAL(".cdr"), EXTENSION_CDR, true, false},
- {FILE_PATH_LITERAL(".cfg"), EXTENSION_CFG, true, false},
- {FILE_PATH_LITERAL(".chi"), EXTENSION_CHI, true, false},
- {FILE_PATH_LITERAL(".chm"), EXTENSION_CHM, true, false},
- {FILE_PATH_LITERAL(".class"), EXTENSION_CLASS, true, false},
- {FILE_PATH_LITERAL(".cmd"), EXTENSION_CMD, true, false},
- {FILE_PATH_LITERAL(".com"), EXTENSION_COM, true, false},
- {FILE_PATH_LITERAL(".command"), EXTENSION_COMMAND, true, false},
- {FILE_PATH_LITERAL(".cpio"), EXTENSION_CPIO, true, true},
- {FILE_PATH_LITERAL(".cpl"), EXTENSION_CPL, true, false},
- {FILE_PATH_LITERAL(".crt"), EXTENSION_CRT, true, false},
- {FILE_PATH_LITERAL(".crx"), EXTENSION_CRX, true, false},
- {FILE_PATH_LITERAL(".csh"), EXTENSION_CSH, true, false},
- {FILE_PATH_LITERAL(".dart"), EXTENSION_DART, true, false},
- {FILE_PATH_LITERAL(".dc42"), EXTENSION_DC42, true, false},
- {FILE_PATH_LITERAL(".deb"), EXTENSION_DEB, true, false},
- {FILE_PATH_LITERAL(".dex"), EXTENSION_DEX, true, false},
- {FILE_PATH_LITERAL(".diskcopy42"), EXTENSION_DISKCOPY42, true, false},
- {FILE_PATH_LITERAL(".dll"), EXTENSION_DLL, true, false},
- {FILE_PATH_LITERAL(".dmg"), EXTENSION_DMG, true, false},
- {FILE_PATH_LITERAL(".dmgpart"), EXTENSION_DMGPART, true, false},
- {FILE_PATH_LITERAL(".drv"), EXTENSION_DRV, true, false},
- {FILE_PATH_LITERAL(".dvdr"), EXTENSION_DVDR, true, false},
- {FILE_PATH_LITERAL(".efi"), EXTENSION_EFI, true, false},
- {FILE_PATH_LITERAL(".eml"), EXTENSION_EML, true, false},
- {FILE_PATH_LITERAL(".exe"), EXTENSION_EXE, true, false},
- {FILE_PATH_LITERAL(".fat"), EXTENSION_FAT, true, true},
- {FILE_PATH_LITERAL(".fon"), EXTENSION_FON, true, false},
- {FILE_PATH_LITERAL(".fxp"), EXTENSION_FXP, true, false},
- {FILE_PATH_LITERAL(".gadget"), EXTENSION_GADGET, true, false},
- {FILE_PATH_LITERAL(".grp"), EXTENSION_GRP, true, false},
- {FILE_PATH_LITERAL(".gz"), EXTENSION_GZ, true, true},
- {FILE_PATH_LITERAL(".gzip"), EXTENSION_GZIP, true, true},
- {FILE_PATH_LITERAL(".hfs"), EXTENSION_HFS, true, true},
- {FILE_PATH_LITERAL(".hlp"), EXTENSION_HLP, true, false},
- {FILE_PATH_LITERAL(".hqx"), EXTENSION_HQX, true, true},
- {FILE_PATH_LITERAL(".hta"), EXTENSION_HTA, true, false},
- {FILE_PATH_LITERAL(".htt"), EXTENSION_HTT, true, false},
- {FILE_PATH_LITERAL(".img"), EXTENSION_IMG, true, false},
- {FILE_PATH_LITERAL(".imgpart"), EXTENSION_IMGPART, true, false},
- {FILE_PATH_LITERAL(".inf"), EXTENSION_INF, true, false},
- {FILE_PATH_LITERAL(".ini"), EXTENSION_INI, true, false},
- {FILE_PATH_LITERAL(".ins"), EXTENSION_INS, true, false},
- {FILE_PATH_LITERAL(".inx"), EXTENSION_INX, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".ipa"), EXTENSION_IPA, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".iso"), EXTENSION_ISO, true, true},
- {FILE_PATH_LITERAL(".isp"), EXTENSION_ISP, true, false},
- {FILE_PATH_LITERAL(".isu"), EXTENSION_ISU, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".jar"), EXTENSION_JAR, true, false},
- {FILE_PATH_LITERAL(".jnlp"), EXTENSION_JNLP, true, false},
- {FILE_PATH_LITERAL(".job"), EXTENSION_JOB, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".js"), EXTENSION_JS, true, false},
- {FILE_PATH_LITERAL(".jse"), EXTENSION_JSE, true, false},
- {FILE_PATH_LITERAL(".ksh"), EXTENSION_KSH, true, false},
- {FILE_PATH_LITERAL(".lha"), EXTENSION_LHA, true, true},
- {FILE_PATH_LITERAL(".lnk"), EXTENSION_LNK, true, false},
- {FILE_PATH_LITERAL(".local"), EXTENSION_LOCAL, true, false},
- {FILE_PATH_LITERAL(".lpaq1"), EXTENSION_LPAQ1, true, true},
- {FILE_PATH_LITERAL(".lpaq5"), EXTENSION_LPAQ5, true, true},
- {FILE_PATH_LITERAL(".lpaq8"), EXTENSION_LPAQ8, true, true},
- {FILE_PATH_LITERAL(".lzh"), EXTENSION_LZH, true, true},
- {FILE_PATH_LITERAL(".lzma"), EXTENSION_LZMA, true, true},
- {FILE_PATH_LITERAL(".mad"), EXTENSION_MAD, true, false},
- {FILE_PATH_LITERAL(".maf"), EXTENSION_MAF, true, false},
- {FILE_PATH_LITERAL(".mag"), EXTENSION_MAG, true, false},
- {FILE_PATH_LITERAL(".mam"), EXTENSION_MAM, true, false},
- {FILE_PATH_LITERAL(".manifest"), EXTENSION_MANIFEST, true, false},
- {FILE_PATH_LITERAL(".maq"), EXTENSION_MAQ, true, false},
- {FILE_PATH_LITERAL(".mar"), EXTENSION_MAR, true, false},
- {FILE_PATH_LITERAL(".mas"), EXTENSION_MAS, true, false},
- {FILE_PATH_LITERAL(".mat"), EXTENSION_MAT, true, false},
- {FILE_PATH_LITERAL(".mau"), EXTENSION_MAU, true, false},
- {FILE_PATH_LITERAL(".mav"), EXTENSION_MAV, true, false},
- {FILE_PATH_LITERAL(".maw"), EXTENSION_MAW, true, false},
- {FILE_PATH_LITERAL(".mda"), EXTENSION_MDA, true, false},
- {FILE_PATH_LITERAL(".mdb"), EXTENSION_MDB, true, false},
- {FILE_PATH_LITERAL(".mde"), EXTENSION_MDE, true, false},
- {FILE_PATH_LITERAL(".mdt"), EXTENSION_MDT, true, false},
- {FILE_PATH_LITERAL(".mdw"), EXTENSION_MDW, true, false},
- {FILE_PATH_LITERAL(".mdz"), EXTENSION_MDZ, true, false},
- {FILE_PATH_LITERAL(".mht"), EXTENSION_MHT, true, false},
- {FILE_PATH_LITERAL(".mhtml"), EXTENSION_MHTML, true, false},
- {FILE_PATH_LITERAL(".mim"), EXTENSION_MIM, true, true},
- {FILE_PATH_LITERAL(".mmc"), EXTENSION_MMC, true, false},
- {FILE_PATH_LITERAL(".mof"), EXTENSION_MOF, true, false},
- {FILE_PATH_LITERAL(".msc"), EXTENSION_MSC, true, false},
- {FILE_PATH_LITERAL(".msg"), EXTENSION_MSG, true, false},
- {FILE_PATH_LITERAL(".msh"), EXTENSION_MSH, true, false},
- {FILE_PATH_LITERAL(".msh1"), EXTENSION_MSH1, true, false},
- {FILE_PATH_LITERAL(".msh1xml"), EXTENSION_MSH1XML, true, false},
- {FILE_PATH_LITERAL(".msh2"), EXTENSION_MSH2, true, false},
- {FILE_PATH_LITERAL(".msh2xml"), EXTENSION_MSH2XML, true, false},
- {FILE_PATH_LITERAL(".mshxml"), EXTENSION_MSHXML, true, false},
- {FILE_PATH_LITERAL(".msi"), EXTENSION_MSI, true, false},
- {FILE_PATH_LITERAL(".msp"), EXTENSION_MSP, true, false},
- {FILE_PATH_LITERAL(".mst"), EXTENSION_MST, true, false},
- {FILE_PATH_LITERAL(".ndif"), EXTENSION_NDIF, true, false},
- {FILE_PATH_LITERAL(".ntfs"), EXTENSION_NTFS, true, true},
- {FILE_PATH_LITERAL(".ocx"), EXTENSION_OCX, true, false},
- {FILE_PATH_LITERAL(".ops"), EXTENSION_OPS, true, false},
- {FILE_PATH_LITERAL(".osx"), EXTENSION_OSX, true, false},
- {FILE_PATH_LITERAL(".out"), EXTENSION_OUT, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".pad"), EXTENSION_PAD, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".paf"), EXTENSION_PAF, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".paq8f"), EXTENSION_PAQ8F, true, true},
- {FILE_PATH_LITERAL(".paq8jd"), EXTENSION_PAQ8JD, true, true},
- {FILE_PATH_LITERAL(".paq8l"), EXTENSION_PAQ8L, true, true},
- {FILE_PATH_LITERAL(".paq8o"), EXTENSION_PAQ8O, true, true},
- {FILE_PATH_LITERAL(".partial"), EXTENSION_PARTIAL, true, false},
- {FILE_PATH_LITERAL(".pcd"), EXTENSION_PCD, true, false},
- {FILE_PATH_LITERAL(".pea"), EXTENSION_PEA, true, true},
- {FILE_PATH_LITERAL(".pet"), EXTENSION_PET, true, true},
- {FILE_PATH_LITERAL(".pif"), EXTENSION_PIF, true, false},
- {FILE_PATH_LITERAL(".pkg"), EXTENSION_PKG, true, false},
- {FILE_PATH_LITERAL(".pl"), EXTENSION_PL, true, false},
- {FILE_PATH_LITERAL(".plg"), EXTENSION_PLG, true, false},
- {FILE_PATH_LITERAL(".prf"), EXTENSION_PRF, true, false},
- {FILE_PATH_LITERAL(".prg"), EXTENSION_PRG, true, false},
- {FILE_PATH_LITERAL(".ps1"), EXTENSION_PS1, true, false},
- {FILE_PATH_LITERAL(".ps1xml"), EXTENSION_PS1XML, true, false},
- {FILE_PATH_LITERAL(".ps2"), EXTENSION_PS2, true, false},
- {FILE_PATH_LITERAL(".ps2xml"), EXTENSION_PS2XML, true, false},
- {FILE_PATH_LITERAL(".psc1"), EXTENSION_PSC1, true, false},
- {FILE_PATH_LITERAL(".psc2"), EXTENSION_PSC2, true, false},
- {FILE_PATH_LITERAL(".pst"), EXTENSION_PST, true, false},
- {FILE_PATH_LITERAL(".pup"), EXTENSION_PUP, true, true},
- {FILE_PATH_LITERAL(".py"), EXTENSION_PY, true, false},
- {FILE_PATH_LITERAL(".pyc"), EXTENSION_PYC, true, false},
- {FILE_PATH_LITERAL(".pyw"), EXTENSION_PYW, true, false},
- {FILE_PATH_LITERAL(".quad"), EXTENSION_QUAD, true, true},
- {FILE_PATH_LITERAL(".r00"), EXTENSION_R00, true, true},
- {FILE_PATH_LITERAL(".r01"), EXTENSION_R01, true, true},
- {FILE_PATH_LITERAL(".r02"), EXTENSION_R02, true, true},
- {FILE_PATH_LITERAL(".r03"), EXTENSION_R03, true, true},
- {FILE_PATH_LITERAL(".r04"), EXTENSION_R04, true, true},
- {FILE_PATH_LITERAL(".r05"), EXTENSION_R05, true, true},
- {FILE_PATH_LITERAL(".r06"), EXTENSION_R06, true, true},
- {FILE_PATH_LITERAL(".r07"), EXTENSION_R07, true, true},
- {FILE_PATH_LITERAL(".r08"), EXTENSION_R08, true, true},
- {FILE_PATH_LITERAL(".r09"), EXTENSION_R09, true, true},
- {FILE_PATH_LITERAL(".r10"), EXTENSION_R10, true, true},
- {FILE_PATH_LITERAL(".r11"), EXTENSION_R11, true, true},
- {FILE_PATH_LITERAL(".r12"), EXTENSION_R12, true, true},
- {FILE_PATH_LITERAL(".r13"), EXTENSION_R13, true, true},
- {FILE_PATH_LITERAL(".r14"), EXTENSION_R14, true, true},
- {FILE_PATH_LITERAL(".r15"), EXTENSION_R15, true, true},
- {FILE_PATH_LITERAL(".r16"), EXTENSION_R16, true, true},
- {FILE_PATH_LITERAL(".r17"), EXTENSION_R17, true, true},
- {FILE_PATH_LITERAL(".r18"), EXTENSION_R18, true, true},
- {FILE_PATH_LITERAL(".r19"), EXTENSION_R19, true, true},
- {FILE_PATH_LITERAL(".r20"), EXTENSION_R20, true, true},
- {FILE_PATH_LITERAL(".r21"), EXTENSION_R21, true, true},
- {FILE_PATH_LITERAL(".r22"), EXTENSION_R22, true, true},
- {FILE_PATH_LITERAL(".r23"), EXTENSION_R23, true, true},
- {FILE_PATH_LITERAL(".r24"), EXTENSION_R24, true, true},
- {FILE_PATH_LITERAL(".r25"), EXTENSION_R25, true, true},
- {FILE_PATH_LITERAL(".r26"), EXTENSION_R26, true, true},
- {FILE_PATH_LITERAL(".r27"), EXTENSION_R27, true, true},
- {FILE_PATH_LITERAL(".r28"), EXTENSION_R28, true, true},
- {FILE_PATH_LITERAL(".r29"), EXTENSION_R29, true, true},
- {FILE_PATH_LITERAL(".rar"), EXTENSION_RAR, true, true},
- {FILE_PATH_LITERAL(".rb"), EXTENSION_RB, true, false},
- {FILE_PATH_LITERAL(".rels"), EXTENSION_RELS, true, false},
- {FILE_PATH_LITERAL(".reg"), EXTENSION_REG, true, false},
- {FILE_PATH_LITERAL(".rgs"), EXTENSION_RGS, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".rpm"), EXTENSION_RPM, true, false},
- {FILE_PATH_LITERAL(".rtf"), EXTENSION_RTF, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".scf"), EXTENSION_SCF, true, false},
- {FILE_PATH_LITERAL(".scr"), EXTENSION_SCR, true, false},
- {FILE_PATH_LITERAL(".sct"), EXTENSION_SCT, true, false},
- {FILE_PATH_LITERAL(".search-ms"), EXTENSION_SEARCH_MS, true, false},
- {FILE_PATH_LITERAL(".sh"), EXTENSION_SH, true, false},
- {FILE_PATH_LITERAL(".shar"), EXTENSION_SHAR, true, false},
- {FILE_PATH_LITERAL(".shb"), EXTENSION_SHB, true, false},
- {FILE_PATH_LITERAL(".shs"), EXTENSION_SHS, true, false},
- {FILE_PATH_LITERAL(".slp"), EXTENSION_SLP, true, true},
- {FILE_PATH_LITERAL(".smi"), EXTENSION_SMI, true, false},
- {FILE_PATH_LITERAL(".sparsebundle"), EXTENSION_SPARSEBUNDLE, true, false},
- {FILE_PATH_LITERAL(".sparseimage"), EXTENSION_SPARSEIMAGE, true, false},
- {FILE_PATH_LITERAL(".spl"), EXTENSION_SPL, true, false},
- {FILE_PATH_LITERAL(".squashfs"), EXTENSION_SQUASHFS, true, true},
- {FILE_PATH_LITERAL(".svg"), EXTENSION_SVG, true, false},
- {FILE_PATH_LITERAL(".swf"), EXTENSION_SWF, true, false},
- {FILE_PATH_LITERAL(".swm"), EXTENSION_SWM, true, true},
- {FILE_PATH_LITERAL(".sys"), EXTENSION_SYS, true, false},
- {FILE_PATH_LITERAL(".tar"), EXTENSION_TAR, true, true},
- {FILE_PATH_LITERAL(".taz"), EXTENSION_TAZ, true, true},
- {FILE_PATH_LITERAL(".tbz"), EXTENSION_TBZ, true, true},
- {FILE_PATH_LITERAL(".tbz2"), EXTENSION_TBZ2, true, true},
- {FILE_PATH_LITERAL(".tcsh"), EXTENSION_TCSH, true, false},
- {FILE_PATH_LITERAL(".tgz"), EXTENSION_TGZ, true, true},
- {FILE_PATH_LITERAL(".toast"), EXTENSION_TOAST, true, false},
- {FILE_PATH_LITERAL(".torrent"), EXTENSION_TORRENT, true, false},
- {FILE_PATH_LITERAL(".tpz"), EXTENSION_TPZ, true, true},
- {FILE_PATH_LITERAL(".txz"), EXTENSION_TXZ, true, true},
- {FILE_PATH_LITERAL(".tz"), EXTENSION_TZ, true, true},
- {FILE_PATH_LITERAL(".u3p"), EXTENSION_U3P, false, false}, // UMA only.
- {FILE_PATH_LITERAL(".udf"), EXTENSION_UDF, true, true},
- {FILE_PATH_LITERAL(".udif"), EXTENSION_UDIF, true, false},
- {FILE_PATH_LITERAL(".url"), EXTENSION_URL, true, false},
- {FILE_PATH_LITERAL(".uu"), EXTENSION_UU, true, true},
- {FILE_PATH_LITERAL(".uue"), EXTENSION_UUE, true, true},
- {FILE_PATH_LITERAL(".vb"), EXTENSION_VB, true, false},
- {FILE_PATH_LITERAL(".vbe"), EXTENSION_VBE, true, false},
- {FILE_PATH_LITERAL(".vbs"), EXTENSION_VBS, true, false},
- {FILE_PATH_LITERAL(".vbscript"), EXTENSION_VBSCRIPT, false, false}, // UMA.
- {FILE_PATH_LITERAL(".vhd"), EXTENSION_VHD, true, true},
- {FILE_PATH_LITERAL(".vhdx"), EXTENSION_VHDX, true, true},
- {FILE_PATH_LITERAL(".vmdk"), EXTENSION_VMDK, true, true},
- {FILE_PATH_LITERAL(".vsd"), EXTENSION_VSD, true, false},
- {FILE_PATH_LITERAL(".vsmacros"), EXTENSION_VSMACROS, true, false},
- {FILE_PATH_LITERAL(".vss"), EXTENSION_VSS, true, false},
- {FILE_PATH_LITERAL(".vst"), EXTENSION_VST, true, false},
- {FILE_PATH_LITERAL(".vsw"), EXTENSION_VSW, true, false},
- {FILE_PATH_LITERAL(".website"), EXTENSION_WEBSITE, true, false},
- {FILE_PATH_LITERAL(".wim"), EXTENSION_WIM, true, true},
- {FILE_PATH_LITERAL(".workflow"), EXTENSION_WORKFLOW, false, false}, // UMA.
- {FILE_PATH_LITERAL(".wrc"), EXTENSION_WRC, true, true},
- {FILE_PATH_LITERAL(".ws"), EXTENSION_WS, true, false},
- {FILE_PATH_LITERAL(".wsc"), EXTENSION_WSC, true, false},
- {FILE_PATH_LITERAL(".wsf"), EXTENSION_WSF, true, false},
- {FILE_PATH_LITERAL(".wsh"), EXTENSION_WSH, true, false},
- {FILE_PATH_LITERAL(".xar"), EXTENSION_XAR, true, true},
- {FILE_PATH_LITERAL(".xbap"), EXTENSION_XBAP, true, false},
- {FILE_PATH_LITERAL(".xml"), EXTENSION_XML, true, false},
- {FILE_PATH_LITERAL(".xnk"), EXTENSION_XNK, true, false},
- {FILE_PATH_LITERAL(".xrm-ms"), EXTENSION_XRM_MS, true, false},
- {FILE_PATH_LITERAL(".xsl"), EXTENSION_XSL, true, false},
- {FILE_PATH_LITERAL(".xxe"), EXTENSION_XXE, true, true},
- {FILE_PATH_LITERAL(".xz"), EXTENSION_XZ, true, true},
- {FILE_PATH_LITERAL(".z"), EXTENSION_Z, true, true},
- {FILE_PATH_LITERAL(".zip"), EXTENSION_ZIP, true, true},
- {FILE_PATH_LITERAL(".zipx"), EXTENSION_ZIPX, true, true},
- {FILE_PATH_LITERAL(".zpaq"), EXTENSION_ZPAQ, true, true},
-};
-
-const SafeBrowsingFiletype& GetFileType(const base::FilePath& file) {
- static const SafeBrowsingFiletype kOther = {
- nullptr, EXTENSION_OTHER, false, false
- };
-
- base::FilePath::StringType extension = GetFileExtension(file);
- SafeBrowsingFiletype needle = {extension.c_str()};
-
- const auto begin = kSafeBrowsingFileTypes;
- const auto end = kSafeBrowsingFileTypes + arraysize(kSafeBrowsingFileTypes);
- const auto result = std::lower_bound(
- begin, end, needle,
- [](const SafeBrowsingFiletype& left, const SafeBrowsingFiletype& right) {
- return base::FilePath::CompareLessIgnoreCase(left.extension,
- right.extension);
- });
- if (result == end ||
- !base::FilePath::CompareEqualIgnoreCase(needle.extension,
- result->extension))
- return kOther;
- return *result;
-}
-
-} // namespace
-
-const int kSBClientDownloadExtensionsMax = EXTENSION_MAX;
-
-const base::FilePath::StringType GetFileExtension(const base::FilePath& file) {
- // Remove trailing space and period characters from the extension.
- base::FilePath::StringType file_basename = file.BaseName().value();
- base::FilePath::StringPieceType trimmed_filename = base::TrimString(
- file_basename, FILE_PATH_LITERAL(". "), base::TRIM_TRAILING);
- return base::FilePath(trimmed_filename).FinalExtension();
-}
-
-bool IsArchiveFile(const base::FilePath& file) {
- // List of interesting archive file formats in kSafeBrowsingFileTypes is by no
- // means exhaustive, but are currently file types that Safe Browsing would
- // like to see pings for due to the possibility of them being used as wrapper
- // formats for malicious payloads.
- return GetFileType(file).is_archive;
-}
-
-bool IsSupportedBinaryFile(const base::FilePath& file) {
- return GetFileType(file).is_supported_binary;
-}
-
ClientDownloadRequest::DownloadType GetDownloadType(
const base::FilePath& file) {
- DCHECK(IsSupportedBinaryFile(file));
+ // TODO(nparker): Put all of this logic into the FileTypePolicies
+ // protobuf.
if (file.MatchesExtension(FILE_PATH_LITERAL(".apk")))
return ClientDownloadRequest::ANDROID_APK;
else if (file.MatchesExtension(FILE_PATH_LITERAL(".crx")))
@@ -643,14 +50,10 @@ ClientDownloadRequest::DownloadType GetDownloadType(
file.MatchesExtension(FILE_PATH_LITERAL(".sparsebundle")) ||
file.MatchesExtension(FILE_PATH_LITERAL(".sparseimage")))
return ClientDownloadRequest::MAC_EXECUTABLE;
- else if (IsArchiveFile(file))
+ else if (FileTypePolicies::GetInstance()->IsArchiveFile(file))
return ClientDownloadRequest::ARCHIVE;
return ClientDownloadRequest::WIN_EXECUTABLE;
}
-int GetSBClientDownloadExtensionValueForUMA(const base::FilePath& file) {
- return GetFileType(file).uma_value;
-}
-
} // namespace download_protection_util
} // namespace safe_browsing

Powered by Google App Engine
This is Rietveld 408576698