| ... | ... |
@@ -122,7 +122,7 @@ am__libclamav_la_SOURCES_DIST = clamav.h matcher-ac.c matcher-ac.h \ |
| 122 | 122 |
jsparse/lexglobal.h jsparse/textbuf.h uniq.c uniq.h version.c \ |
| 123 | 123 |
version.h mpool.c mpool.h default.h sha256.c sha256.h bignum.h \ |
| 124 | 124 |
bytecode.c bytecode.h bytecode_vm.c bytecode_priv.h clambc.h \ |
| 125 |
- cpio.c cpio.h bignum.c bignum_class.h |
|
| 125 |
+ cpio.c cpio.h macho.c macho.h bignum.c bignum_class.h |
|
| 126 | 126 |
@LINK_TOMMATH_FALSE@am__objects_1 = libclamav_la-bignum.lo |
| 127 | 127 |
am_libclamav_la_OBJECTS = libclamav_la-matcher-ac.lo \ |
| 128 | 128 |
libclamav_la-matcher-bm.lo libclamav_la-matcher.lo \ |
| ... | ... |
@@ -161,7 +161,7 @@ am_libclamav_la_OBJECTS = libclamav_la-matcher-ac.lo \ |
| 161 | 161 |
libclamav_la-version.lo libclamav_la-mpool.lo \ |
| 162 | 162 |
libclamav_la-sha256.lo libclamav_la-bytecode.lo \ |
| 163 | 163 |
libclamav_la-bytecode_vm.lo libclamav_la-cpio.lo \ |
| 164 |
- $(am__objects_1) |
|
| 164 |
+ libclamav_la-macho.lo $(am__objects_1) |
|
| 165 | 165 |
libclamav_la_OBJECTS = $(am_libclamav_la_OBJECTS) |
| 166 | 166 |
libclamav_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ |
| 167 | 167 |
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libclamav_la_CFLAGS) \ |
| ... | ... |
@@ -532,7 +532,8 @@ libclamav_la_SOURCES = clamav.h matcher-ac.c matcher-ac.h matcher-bm.c \ |
| 532 | 532 |
jsparse/js-norm.h jsparse/lexglobal.h jsparse/textbuf.h uniq.c \ |
| 533 | 533 |
uniq.h version.c version.h mpool.c mpool.h default.h sha256.c \ |
| 534 | 534 |
sha256.h bignum.h bytecode.c bytecode.h bytecode_vm.c \ |
| 535 |
- bytecode_priv.h clambc.h cpio.c cpio.h $(am__append_7) |
|
| 535 |
+ bytecode_priv.h clambc.h cpio.c cpio.h macho.c macho.h \ |
|
| 536 |
+ $(am__append_7) |
|
| 536 | 537 |
noinst_LTLIBRARIES = libclamav_internal_utils.la libclamav_internal_utils_nothreads.la |
| 537 | 538 |
COMMON_CLEANFILES = version.h version.h.tmp *.gcda *.gcno lzma/*.gcda lzma/*.gcno |
| 538 | 539 |
@MAINTAINER_MODE_TRUE@BUILT_SOURCES = jsparse/generated/operators.h jsparse/generated/keywords.h jsparse-keywords.gperf |
| ... | ... |
@@ -671,6 +672,7 @@ distclean-compile: |
| 671 | 671 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-js-norm.Plo@am__quote@ |
| 672 | 672 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-line.Plo@am__quote@ |
| 673 | 673 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-lzma_iface.Plo@am__quote@ |
| 674 |
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-macho.Plo@am__quote@ |
|
| 674 | 675 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-matcher-ac.Plo@am__quote@ |
| 675 | 676 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-matcher-bm.Plo@am__quote@ |
| 676 | 677 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-matcher.Plo@am__quote@ |
| ... | ... |
@@ -1266,6 +1268,13 @@ libclamav_la-cpio.lo: cpio.c |
| 1266 | 1266 |
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
| 1267 | 1267 |
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libclamav_la_CFLAGS) $(CFLAGS) -c -o libclamav_la-cpio.lo `test -f 'cpio.c' || echo '$(srcdir)/'`cpio.c |
| 1268 | 1268 |
|
| 1269 |
+libclamav_la-macho.lo: macho.c |
|
| 1270 |
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libclamav_la_CFLAGS) $(CFLAGS) -MT libclamav_la-macho.lo -MD -MP -MF $(DEPDIR)/libclamav_la-macho.Tpo -c -o libclamav_la-macho.lo `test -f 'macho.c' || echo '$(srcdir)/'`macho.c |
|
| 1271 |
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libclamav_la-macho.Tpo $(DEPDIR)/libclamav_la-macho.Plo |
|
| 1272 |
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='macho.c' object='libclamav_la-macho.lo' libtool=yes @AMDEPBACKSLASH@ |
|
| 1273 |
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
|
| 1274 |
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libclamav_la_CFLAGS) $(CFLAGS) -c -o libclamav_la-macho.lo `test -f 'macho.c' || echo '$(srcdir)/'`macho.c |
|
| 1275 |
+ |
|
| 1269 | 1276 |
libclamav_la-bignum.lo: bignum.c |
| 1270 | 1277 |
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libclamav_la_CFLAGS) $(CFLAGS) -MT libclamav_la-bignum.lo -MD -MP -MF $(DEPDIR)/libclamav_la-bignum.Tpo -c -o libclamav_la-bignum.lo `test -f 'bignum.c' || echo '$(srcdir)/'`bignum.c |
| 1271 | 1278 |
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libclamav_la-bignum.Tpo $(DEPDIR)/libclamav_la-bignum.Plo |
| ... | ... |
@@ -73,6 +73,8 @@ static struct dconf_module modules[] = {
|
| 73 | 73 |
|
| 74 | 74 |
{ "ELF", NULL, 0x1, 1 },
|
| 75 | 75 |
|
| 76 |
+ { "MACHO", NULL, 0x1, 1 },
|
|
| 77 |
+ |
|
| 76 | 78 |
{ "ARCHIVE", "RAR", ARCH_CONF_RAR, 1 },
|
| 77 | 79 |
{ "ARCHIVE", "ZIP", ARCH_CONF_ZIP, 1 },
|
| 78 | 80 |
{ "ARCHIVE", "GZIP", ARCH_CONF_GZ, 1 },
|
| ... | ... |
@@ -135,6 +137,10 @@ struct cli_dconf *cli_dconf_init(void) |
| 135 | 135 |
if(modules[i].state) |
| 136 | 136 |
dconf->elf |= modules[i].bflag; |
| 137 | 137 |
|
| 138 |
+ } else if(!strcmp(modules[i].mname, "MACHO")) {
|
|
| 139 |
+ if(modules[i].state) |
|
| 140 |
+ dconf->macho |= modules[i].bflag; |
|
| 141 |
+ |
|
| 138 | 142 |
} else if(!strcmp(modules[i].mname, "ARCHIVE")) {
|
| 139 | 143 |
if(modules[i].state) |
| 140 | 144 |
dconf->archive |= modules[i].bflag; |
| ... | ... |
@@ -161,8 +167,8 @@ struct cli_dconf *cli_dconf_init(void) |
| 161 | 161 |
|
| 162 | 162 |
void cli_dconf_print(struct cli_dconf *dconf) |
| 163 | 163 |
{
|
| 164 |
- uint8_t pe = 0, elf = 0, arch = 0, doc = 0, mail = 0, other = 0, phishing=0; |
|
| 165 |
- unsigned int i; |
|
| 164 |
+ unsigned int pe = 0, elf = 0, macho = 0, arch = 0, doc = 0, mail = 0; |
|
| 165 |
+ unsigned int other = 0, phishing = 0, i; |
|
| 166 | 166 |
|
| 167 | 167 |
|
| 168 | 168 |
cli_dbgmsg("Dynamic engine configuration settings:\n");
|
| ... | ... |
@@ -185,6 +191,12 @@ void cli_dconf_print(struct cli_dconf *dconf) |
| 185 | 185 |
elf = 1; |
| 186 | 186 |
} |
| 187 | 187 |
|
| 188 |
+ } else if(!strcmp(modules[i].mname, "MACHO")) {
|
|
| 189 |
+ if(!macho) {
|
|
| 190 |
+ cli_dbgmsg("Module MACHO: %s\n", dconf->elf ? "On" : "Off");
|
|
| 191 |
+ macho = 1; |
|
| 192 |
+ } |
|
| 193 |
+ |
|
| 188 | 194 |
} else if(!strcmp(modules[i].mname, "ARCHIVE")) {
|
| 189 | 195 |
if(!arch) {
|
| 190 | 196 |
cli_dbgmsg("Module ARCHIVE: %s\n", dconf->archive ? "On" : "Off");
|
| ... | ... |
@@ -303,6 +315,15 @@ int cli_dconf_load(FILE *fs, struct cl_engine *engine, unsigned int options, str |
| 303 | 303 |
} |
| 304 | 304 |
} |
| 305 | 305 |
|
| 306 |
+ if(!strncmp(buffer, "MACHO:", 4) && chkflevel(buffer, 2)) {
|
|
| 307 |
+ if(sscanf(buffer + 4, "0x%x", &val) == 1) {
|
|
| 308 |
+ engine->dconf->macho = val; |
|
| 309 |
+ } else {
|
|
| 310 |
+ ret = CL_EMALFDB; |
|
| 311 |
+ break; |
|
| 312 |
+ } |
|
| 313 |
+ } |
|
| 314 |
+ |
|
| 306 | 315 |
if(!strncmp(buffer, "ARCHIVE:", 8) && chkflevel(buffer, 2)) {
|
| 307 | 316 |
if(sscanf(buffer + 8, "0x%x", &val) == 1) {
|
| 308 | 317 |
engine->dconf->archive = val; |
| ... | ... |
@@ -56,6 +56,7 @@ static const struct ftmap_s {
|
| 56 | 56 |
{ "CL_TYPE_ANY", 0 }, /* for ft-sigs */
|
| 57 | 57 |
{ "CL_TYPE_MSEXE", CL_TYPE_MSEXE },
|
| 58 | 58 |
{ "CL_TYPE_ELF", CL_TYPE_ELF },
|
| 59 |
+ { "CL_TYPE_MACHO", CL_TYPE_MACHO },
|
|
| 59 | 60 |
{ "CL_TYPE_POSIX_TAR", CL_TYPE_POSIX_TAR },
|
| 60 | 61 |
{ "CL_TYPE_OLD_TAR", CL_TYPE_OLD_TAR },
|
| 61 | 62 |
{ "CL_TYPE_CPIO_OLD", CL_TYPE_CPIO_OLD },
|
| ... | ... |
@@ -93,6 +93,7 @@ |
| 93 | 93 |
#include "dlp.h" |
| 94 | 94 |
#include "default.h" |
| 95 | 95 |
#include "cpio.h" |
| 96 |
+#include "macho.h" |
|
| 96 | 97 |
|
| 97 | 98 |
#ifdef HAVE_BZLIB_H |
| 98 | 99 |
#include <bzlib.h> |
| ... | ... |
@@ -2084,6 +2085,11 @@ int cli_magic_scandesc(int desc, cli_ctx *ctx) |
| 2084 | 2084 |
ret = cli_scanelf(desc, ctx); |
| 2085 | 2085 |
break; |
| 2086 | 2086 |
|
| 2087 |
+ case CL_TYPE_MACHO: |
|
| 2088 |
+ if(ctx->dconf->macho) |
|
| 2089 |
+ ret = cli_scanmacho(desc, ctx); |
|
| 2090 |
+ break; |
|
| 2091 |
+ |
|
| 2087 | 2092 |
case CL_TYPE_SIS: |
| 2088 | 2093 |
if(SCAN_ARCHIVE && (DCONF_ARCH & ARCH_CONF_SIS)) |
| 2089 | 2094 |
ret = cli_scansis(desc, ctx); |