From f5f7b7a1b98e502093a4d9ce830e41f328d10c79 Mon Sep 17 00:00:00 2001 From: Kevin Lin Date: Thu, 16 Jul 2015 12:35:38 -0400 Subject: [PATCH] dconf: added passwd dconf for archives, applied to unzip --- libclamav/dconf.c | 1 + libclamav/dconf.h | 1 + libclamav/unzip.c | 6 +++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libclamav/dconf.c b/libclamav/dconf.c index dc5ebff11..bba374913 100644 --- a/libclamav/dconf.c +++ b/libclamav/dconf.c @@ -102,6 +102,7 @@ static struct dconf_module modules[] = { { "ARCHIVE", "XAR", ARCH_CONF_XAR, 1 }, { "ARCHIVE", "HFSPLUS", ARCH_CONF_HFSPLUS, 1 }, { "ARCHIVE", "XZ", ARCH_CONF_XZ, 1 }, + { "ARCHIVE", "PASSWD", ARCH_CONF_PASSWD, 1 }, { "DOCUMENT", "HTML", DOC_CONF_HTML, 1 }, { "DOCUMENT", "RTF", DOC_CONF_RTF, 1 }, diff --git a/libclamav/dconf.h b/libclamav/dconf.h index 1099833da..9f4adedb8 100644 --- a/libclamav/dconf.h +++ b/libclamav/dconf.h @@ -90,6 +90,7 @@ struct cli_dconf { #define ARCH_CONF_XAR 0x80000 #define ARCH_CONF_HFSPLUS 0x100000 #define ARCH_CONF_XZ 0x200000 +#define ARCH_CONF_PASSWD 0x400000 /* Document flags */ #define DOC_CONF_HTML 0x1 diff --git a/libclamav/unzip.c b/libclamav/unzip.c index e785518d4..6c3820207 100644 --- a/libclamav/unzip.c +++ b/libclamav/unzip.c @@ -362,7 +362,11 @@ static inline int zdecrypt(const uint8_t *src, uint32_t csize, uint32_t usize, c if (!ctx || !ctx->engine) return CL_ENULLARG; - /* TODO - dconf going here */ + /* dconf */ + if (ctx->dconf && !(ctx->dconf->archive & ARCH_CONF_PASSWD)) { + cli_dbgmsg("cli_unzip: decrypt - skipping encrypted file\n"); + return CL_SUCCESS; + } password = ctx->engine->pw_dict;