diff -Nru clamav-0.98.5+addedllvm/ChangeLog clamav-0.98.6+dfsg/ChangeLog --- clamav-0.98.5+addedllvm/ChangeLog 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/ChangeLog 2014-12-18 21:43:18.000000000 +0000 @@ -1,3 +1,44 @@ + +Tue Dec 16 16:21:40 2014 EDT (swebb) +------------------------------------- +bb#11215 - Change a variable to be an unsigned int to compensate for + compiler optimization issue with crafted petite file. Fix + suggested by Sebastian Andrzej Siewior. + +Fri Dec 12 14:33:41 2014 EDT (klin) +----------------------------------- +Added missing break statements(FireAmp #12710) to correct handling of + prescan callback return code. + +Fri Dec 5 15:26:06 2014 EDT (smorgan) +------------------------------------- +bb#11216 - add boundary checks for fuzzed upack file. This issue + was reported by Sebastian Andrzej Siewior. CVE-2014-9328. + +Thu Dec 4 18:29:17 2014 EDT (klin) +----------------------------------- +bb#11212 - fixed section boundary mismatch in MEW unpacker. This issue + was identified by Felix Groebert of the Google Security Team. + +Thu Dec 4 08:43:43 2014 EDT (swebb) +------------------------------------- +bb#11213 - Enforce bounds checking before integer overflow in upx files. + This issue was reported by Kevin Szkudlapski of Quarkslab. + +Tue Dec 2 15:15:55 2014 EDT (swebb) +------------------------------------- +bb#11210: Apply a basic fix for y0da crafted file. This issue was + identified by Felix Groebert of the Google Security Team. + +Fri, 21 Nov 2014 15:55:12 EDT (swebb) +------------------------------------- +bb#11194: Include OpenSSL's headers after the local headers + +Thu, 20 Nov 2014 12:39:00 EDT (swebb) +------------------------------------- +bb#10907: Add trailing newline to the end of the pidfile + (patch submitted by Sebastian Andrzej Siewior) + Wed, 12 Nov 2014 14:30:39 EDT (swebb) ------------------------------------- * bb11176 - Instruct OpenSSL to allow MD5 when in FIPS-compliant mode. diff -Nru clamav-0.98.5+addedllvm/clamav-milter/clamav-milter.c clamav-0.98.6+dfsg/clamav-milter/clamav-milter.c --- clamav-0.98.5+addedllvm/clamav-milter/clamav-milter.c 2014-11-13 22:30:35.000000000 +0000 +++ clamav-0.98.6+dfsg/clamav-milter/clamav-milter.c 2014-12-18 21:42:47.000000000 +0000 @@ -381,7 +381,7 @@ if((fd = fopen(opt->strarg, "w")) == NULL) { logg("!Can't save PID in file %s\n", opt->strarg); } else { - if (fprintf(fd, "%u", (unsigned int)getpid())<0) { + if (fprintf(fd, "%u\n", (unsigned int)getpid())<0) { logg("!Can't save PID in file %s\n", opt->strarg); } fclose(fd); diff -Nru clamav-0.98.5+addedllvm/clamav-milter/Makefile.am clamav-0.98.6+dfsg/clamav-milter/Makefile.am --- clamav-0.98.5+addedllvm/clamav-milter/Makefile.am 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamav-milter/Makefile.am 2014-12-18 21:43:18.000000000 +0000 @@ -47,5 +47,5 @@ DEFS = @DEFS@ -DCL_NOLIBCLAMAV LIBS = $(top_builddir)/libclamav/libclamav_internal_utils.la @CLAMAV_MILTER_LIBS@ @THREAD_LIBS@ -AM_CPPFLAGS = @SSL_CPPFLAGS@ -I$(top_srcdir)/clamd -I$(top_srcdir)/libclamav -I$(top_srcdir)/shared -I$(top_srcdir) @JSON_CPPFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir)/clamd -I$(top_srcdir)/libclamav -I$(top_srcdir)/shared -I$(top_srcdir) @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ CLEANFILES=*.gcda *.gcno diff -Nru clamav-0.98.5+addedllvm/clamav-milter/Makefile.in clamav-0.98.6+dfsg/clamav-milter/Makefile.in --- clamav-0.98.5+addedllvm/clamav-milter/Makefile.in 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamav-milter/Makefile.in 2014-12-18 21:43:18.000000000 +0000 @@ -504,7 +504,7 @@ @BUILD_CLAMD_TRUE@@HAVE_MILTER_TRUE@man_MANS = $(top_builddir)/docs/man/clamav-milter.8 @BUILD_CLAMD_TRUE@@HAVE_MILTER_TRUE@AM_CFLAGS = @WERR_CFLAGS_MILTER@ -AM_CPPFLAGS = @SSL_CPPFLAGS@ -I$(top_srcdir)/clamd -I$(top_srcdir)/libclamav -I$(top_srcdir)/shared -I$(top_srcdir) @JSON_CPPFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir)/clamd -I$(top_srcdir)/libclamav -I$(top_srcdir)/shared -I$(top_srcdir) @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ CLEANFILES = *.gcda *.gcno all: all-am diff -Nru clamav-0.98.5+addedllvm/clamd/Makefile.am clamav-0.98.6+dfsg/clamd/Makefile.am --- clamav-0.98.5+addedllvm/clamd/Makefile.am 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamd/Makefile.am 2014-12-18 21:43:18.000000000 +0000 @@ -53,7 +53,7 @@ endif LIBS = $(top_builddir)/libclamav/libclamav.la @CLAMD_LIBS@ @THREAD_LIBS@ -AM_CPPFLAGS = @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ # it does support --help and --version but with the default config file # it outputs an error message which tells us to edit the config files diff -Nru clamav-0.98.5+addedllvm/clamd/Makefile.in clamav-0.98.6+dfsg/clamd/Makefile.in --- clamav-0.98.5+addedllvm/clamd/Makefile.in 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamd/Makefile.in 2014-12-18 21:43:18.000000000 +0000 @@ -479,7 +479,7 @@ @BUILD_CLAMD_TRUE@ fan.h @BUILD_CLAMD_TRUE@AM_CFLAGS = @WERR_CFLAGS@ -AM_CPPFLAGS = @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ # it does support --help and --version but with the default config file # it outputs an error message which tells us to edit the config files diff -Nru clamav-0.98.5+addedllvm/clamd/server-th.c clamav-0.98.6+dfsg/clamd/server-th.c --- clamav-0.98.5+addedllvm/clamd/server-th.c 2014-11-13 22:30:35.000000000 +0000 +++ clamav-0.98.6+dfsg/clamd/server-th.c 2014-12-18 21:42:47.000000000 +0000 @@ -1034,7 +1034,7 @@ if((fd = fopen(opt->strarg, "w")) == NULL) { logg("!Can't save PID in file %s\n", opt->strarg); } else { - if (fprintf(fd, "%u", (unsigned int) mainpid)<0) { + if (fprintf(fd, "%u\n", (unsigned int) mainpid)<0) { logg("!Can't save PID in file %s\n", opt->strarg); } fclose(fd); diff -Nru clamav-0.98.5+addedllvm/clamd/tcpserver.c clamav-0.98.6+dfsg/clamd/tcpserver.c --- clamav-0.98.5+addedllvm/clamd/tcpserver.c 2014-11-13 22:30:35.000000000 +0000 +++ clamav-0.98.6+dfsg/clamd/tcpserver.c 2014-12-18 21:42:47.000000000 +0000 @@ -112,8 +112,11 @@ serv[0] = '\0'; } #else - strncpy(host, ipaddr, sizeof(host)); - host[sizeof(host)-1] = '\0'; + if (ipaddr) { + strncpy(host, ipaddr, sizeof(host)); + host[sizeof(host)-1] = '\0'; + } else + host[0] = '\0'; snprintf(serv, sizeof(serv), "%u", (unsigned int)(optget(opts, "TCPSocket")->numarg)); #endif if(bind(sockfd, p->ai_addr, p->ai_addrlen) == -1) { diff -Nru clamav-0.98.5+addedllvm/clamdscan/Makefile.am clamav-0.98.6+dfsg/clamdscan/Makefile.am --- clamav-0.98.5+addedllvm/clamdscan/Makefile.am 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamdscan/Makefile.am 2014-12-18 21:43:18.000000000 +0000 @@ -44,7 +44,7 @@ DEFS = @DEFS@ -DCL_NOTHREADS -DCL_NOLIBCLAMAV -AM_CPPFLAGS = @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/clamscan -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @CLAMDSCAN_CPPFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/clamscan -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @CLAMDSCAN_CPPFLAGS@ @JSON_CPPFLAGS@ LIBS = $(top_builddir)/libclamav/libclamav_internal_utils_nothreads.la @CLAMDSCAN_LIBS@ AM_INSTALLCHECK_STD_OPTIONS_EXEMPT=clamdscan$(EXEEXT) diff -Nru clamav-0.98.5+addedllvm/clamdscan/Makefile.in clamav-0.98.6+dfsg/clamdscan/Makefile.in --- clamav-0.98.5+addedllvm/clamdscan/Makefile.in 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamdscan/Makefile.in 2014-12-18 21:43:18.000000000 +0000 @@ -468,7 +468,7 @@ @BUILD_CLAMD_TRUE@ client.h @BUILD_CLAMD_TRUE@AM_CFLAGS = @WERR_CFLAGS@ -AM_CPPFLAGS = @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/clamscan -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @CLAMDSCAN_CPPFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/clamscan -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @CLAMDSCAN_CPPFLAGS@ @JSON_CPPFLAGS@ AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = clamdscan$(EXEEXT) CLEANFILES = *.gcda *.gcno all: all-am diff -Nru clamav-0.98.5+addedllvm/clamdscan/proto.c clamav-0.98.6+dfsg/clamdscan/proto.c --- clamav-0.98.5+addedllvm/clamdscan/proto.c 2014-11-13 22:30:35.000000000 +0000 +++ clamav-0.98.6+dfsg/clamdscan/proto.c 2014-12-18 21:42:47.000000000 +0000 @@ -99,10 +99,9 @@ memset(&hints, 0x00, sizeof(struct addrinfo)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; - hints.ai_flags = AI_PASSIVE; if ((res = getaddrinfo(ipaddr, port, &hints, &info))) { - logg("!Could not lookup %s: %s\n", opt->strarg, gai_strerror(res)); + logg("!Could not lookup %s: %s\n", ipaddr ? ipaddr : "", gai_strerror(res)); opt = opt->nextarg; continue; } diff -Nru clamav-0.98.5+addedllvm/clamdtop/Makefile.am clamav-0.98.6+dfsg/clamdtop/Makefile.am --- clamav-0.98.5+addedllvm/clamdtop/Makefile.am 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamdtop/Makefile.am 2014-12-18 21:43:18.000000000 +0000 @@ -11,8 +11,8 @@ clamdtop.c AM_CFLAGS=@WERR_CFLAGS@ -AM_CPPFLAGS = -I$(top_srcdir) @CURSES_CPPFLAGS@ @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ -clamdtop_LDADD = @CURSES_LIBS@ @SSL_LDFLAGS@ @SSL_LIBS@ $(top_builddir)/libclamav/libclamav_internal_utils_nothreads.la +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @CURSES_CPPFLAGS@ @JSON_CPPFLAGS@ +clamdtop_LDADD = @SSL_LDFLAGS@ @SSL_LIBS@ @CURSES_LIBS@ $(top_builddir)/libclamav/libclamav_internal_utils_nothreads.la endif DEFS = @DEFS@ -DCL_NOTHREADS -DCL_NOLIBCLAMAV EXTRA_DIST = clamdtop.c diff -Nru clamav-0.98.5+addedllvm/clamdtop/Makefile.in clamav-0.98.6+dfsg/clamdtop/Makefile.in --- clamav-0.98.5+addedllvm/clamdtop/Makefile.in 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamdtop/Makefile.in 2014-12-18 21:43:18.000000000 +0000 @@ -465,8 +465,8 @@ @HAVE_CURSES_TRUE@ clamdtop.c @HAVE_CURSES_TRUE@AM_CFLAGS = @WERR_CFLAGS@ -@HAVE_CURSES_TRUE@AM_CPPFLAGS = -I$(top_srcdir) @CURSES_CPPFLAGS@ @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ -@HAVE_CURSES_TRUE@clamdtop_LDADD = @CURSES_LIBS@ @SSL_LDFLAGS@ @SSL_LIBS@ $(top_builddir)/libclamav/libclamav_internal_utils_nothreads.la +@HAVE_CURSES_TRUE@AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @CURSES_CPPFLAGS@ @JSON_CPPFLAGS@ +@HAVE_CURSES_TRUE@clamdtop_LDADD = @SSL_LDFLAGS@ @SSL_LIBS@ @CURSES_LIBS@ $(top_builddir)/libclamav/libclamav_internal_utils_nothreads.la EXTRA_DIST = clamdtop.c all: all-am diff -Nru clamav-0.98.5+addedllvm/clamscan/Makefile.am clamav-0.98.6+dfsg/clamscan/Makefile.am --- clamav-0.98.5+addedllvm/clamscan/Makefile.am 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamscan/Makefile.am 2014-12-18 21:43:18.000000000 +0000 @@ -38,6 +38,6 @@ AM_CFLAGS=@WERR_CFLAGS@ DEFS = @DEFS@ -DCL_NOTHREADS LIBS = $(top_builddir)/libclamav/libclamav.la @THREAD_LIBS@ @CLAMSCAN_LIBS@ -AM_CPPFLAGS = @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @CLAMSCAN_CPPFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ @CLAMSCAN_CPPFLAGS@ CLEANFILES=*.gcda *.gcno diff -Nru clamav-0.98.5+addedllvm/clamscan/Makefile.in clamav-0.98.6+dfsg/clamscan/Makefile.in --- clamav-0.98.5+addedllvm/clamscan/Makefile.in 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamscan/Makefile.in 2014-12-18 21:43:18.000000000 +0000 @@ -456,7 +456,7 @@ manager.h AM_CFLAGS = @WERR_CFLAGS@ -AM_CPPFLAGS = @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @CLAMSCAN_CPPFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ @CLAMSCAN_CPPFLAGS@ CLEANFILES = *.gcda *.gcno all: all-am diff -Nru clamav-0.98.5+addedllvm/clamsubmit/Makefile.am clamav-0.98.6+dfsg/clamsubmit/Makefile.am --- clamav-0.98.5+addedllvm/clamsubmit/Makefile.am 2014-11-13 22:30:35.000000000 +0000 +++ clamav-0.98.6+dfsg/clamsubmit/Makefile.am 2014-12-18 21:42:47.000000000 +0000 @@ -31,7 +31,7 @@ AM_CFLAGS=@WERR_CFLAGS@ @CLAMSUBMIT_CFLAGS@ DEFS = @DEFS@ -DCL_NOTHREADS -AM_CPPFLAGS = @JSON_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @JSON_CPPFLAGS@ LIBS = $(top_builddir)/libclamav/libclamav.la @CLAMSUBMIT_LIBS@ @THREAD_LIBS@ AM_INSTALLCHECK_STD_OPTIONS_EXEMPT=clamsubmit$(EXEEXT) diff -Nru clamav-0.98.5+addedllvm/clamsubmit/Makefile.in clamav-0.98.6+dfsg/clamsubmit/Makefile.in --- clamav-0.98.5+addedllvm/clamsubmit/Makefile.in 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/clamsubmit/Makefile.in 2014-12-18 21:43:18.000000000 +0000 @@ -449,7 +449,7 @@ clamsubmit.c AM_CFLAGS = @WERR_CFLAGS@ @CLAMSUBMIT_CFLAGS@ -AM_CPPFLAGS = @JSON_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @JSON_CPPFLAGS@ AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = clamsubmit$(EXEEXT) CLEANFILES = *.gcda *.gcno all: all-am diff -Nru clamav-0.98.5+addedllvm/configure clamav-0.98.6+dfsg/configure --- clamav-0.98.5+addedllvm/configure 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/configure 2014-12-18 21:43:18.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ClamAV 0.98.5. +# Generated by GNU Autoconf 2.69 for ClamAV 0.98.6. # # Report bugs to . # @@ -592,8 +592,8 @@ # Identity of this package. PACKAGE_NAME='ClamAV' PACKAGE_TARNAME='clamav' -PACKAGE_VERSION='0.98.5' -PACKAGE_STRING='ClamAV 0.98.5' +PACKAGE_VERSION='0.98.6' +PACKAGE_STRING='ClamAV 0.98.6' PACKAGE_BUGREPORT='http://bugs.clamav.net/' PACKAGE_URL='http://www.clamav.net/' @@ -1468,7 +1468,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ClamAV 0.98.5 to adapt to many kinds of systems. +\`configure' configures ClamAV 0.98.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1539,7 +1539,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ClamAV 0.98.5:";; + short | recursive ) echo "Configuration of ClamAV 0.98.6:";; esac cat <<\_ACEOF @@ -1708,7 +1708,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ClamAV configure 0.98.5 +ClamAV configure 0.98.6 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2177,7 +2177,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ClamAV $as_me 0.98.5, which was +It was created by ClamAV $as_me 0.98.6, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3346,7 +3346,7 @@ # Define the identity of the package. PACKAGE='clamav' - VERSION='0.98.5' + VERSION='0.98.6' # Some tools Automake needs. @@ -5087,10 +5087,10 @@ -VERSION="0.98.5" +VERSION="0.98.6" LC_CURRENT=7 -LC_REVISION=22 +LC_REVISION=25 LC_AGE=1 LIBCLAMAV_VERSION="$LC_CURRENT":"$LC_REVISION":"$LC_AGE" @@ -23185,7 +23185,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ClamAV $as_me 0.98.5, which was +This file was extended by ClamAV $as_me 0.98.6, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23252,7 +23252,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ClamAV config.status 0.98.5 +ClamAV config.status 0.98.6 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -25825,7 +25825,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ClamAV $as_me 0.98.5, which was +This file was extended by ClamAV $as_me 0.98.6, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -25892,7 +25892,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ClamAV config.status 0.98.5 +ClamAV config.status 0.98.6 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru clamav-0.98.5+addedllvm/configure.ac clamav-0.98.6+dfsg/configure.ac --- clamav-0.98.5+addedllvm/configure.ac 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/configure.ac 2014-12-18 21:43:18.000000000 +0000 @@ -20,7 +20,7 @@ AC_PREREQ([2.59]) dnl For a release change [devel] to the real version [0.xy] dnl also change VERSION below -AC_INIT([ClamAV], [0.98.5], [http://bugs.clamav.net/], [clamav], [http://www.clamav.net/]) +AC_INIT([ClamAV], [0.98.6], [http://bugs.clamav.net/], [clamav], [http://www.clamav.net/]) AH_BOTTOM([#include "platform.h"]) dnl put configure auxiliary into config diff -Nru clamav-0.98.5+addedllvm/debian/changelog clamav-0.98.6+dfsg/debian/changelog --- clamav-0.98.5+addedllvm/debian/changelog 2014-11-21 21:31:53.000000000 +0000 +++ clamav-0.98.6+dfsg/debian/changelog 2015-01-30 14:02:09.000000000 +0000 @@ -1,3 +1,12 @@ +clamav (0.98.6+dfsg-0ubuntu0.12.04.1) precise-security; urgency=medium + + * Updated to 0.98.6 to fix security issues, including CVE-2014-9328. + * Removed upstreamed patches: + - d/p/0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch + - d/p/0017-Bump-.so-version-number.patch + + -- Marc Deslauriers Fri, 30 Jan 2015 09:01:52 -0500 + clamav (0.98.5+addedllvm-0ubuntu0.12.04.1) precise-security; urgency=medium * Updated to 0.98.5 to fix security issues, including CVE-2013-6497. diff -Nru clamav-0.98.5+addedllvm/debian/patches/0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch clamav-0.98.6+dfsg/debian/patches/0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch --- clamav-0.98.5+addedllvm/debian/patches/0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch 2014-11-20 19:34:16.000000000 +0000 +++ clamav-0.98.6+dfsg/debian/patches/0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -From c2e7a9faf12fb0c2c6dbf2f1cfad54d63a05ace6 Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior -Date: Sat, 29 Mar 2014 15:52:55 +0100 -Subject: Add an additional \n after the number in the pidfile - -start-stop-daemon works without the \n in the file but pkill does not. -Also the output of cat $PifFile looks better :) - -Signed-off-by: Sebastian Andrzej Siewior ---- - clamav-milter/clamav-milter.c | 2 +- - clamd/server-th.c | 2 +- - freshclam/freshclam.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/clamav-milter/clamav-milter.c b/clamav-milter/clamav-milter.c -index c622a15..710a1ee 100644 ---- a/clamav-milter/clamav-milter.c -+++ b/clamav-milter/clamav-milter.c -@@ -383,7 +383,7 @@ int main(int argc, char **argv) { - if((fd = fopen(opt->strarg, "w")) == NULL) { - logg("!Can't save PID in file %s\n", opt->strarg); - } else { -- if (fprintf(fd, "%u", (unsigned int)getpid())<0) { -+ if (fprintf(fd, "%u\n", (unsigned int)getpid())<0) { - logg("!Can't save PID in file %s\n", opt->strarg); - } - fclose(fd); -diff --git a/clamd/server-th.c b/clamd/server-th.c -index 9a3dd5b..8d81bb8 100644 ---- a/clamd/server-th.c -+++ b/clamd/server-th.c -@@ -1037,7 +1037,7 @@ int recvloop_th(int *socketds, unsigned nsockets, struct cl_engine *engine, unsi - if((fd = fopen(opt->strarg, "w")) == NULL) { - logg("!Can't save PID in file %s\n", opt->strarg); - } else { -- if (fprintf(fd, "%u", (unsigned int) mainpid)<0) { -+ if (fprintf(fd, "%u\n", (unsigned int) mainpid)<0) { - logg("!Can't save PID in file %s\n", opt->strarg); - } - fclose(fd); -diff --git a/freshclam/freshclam.c b/freshclam/freshclam.c -index 054e85e..a76d39f 100644 ---- a/freshclam/freshclam.c -+++ b/freshclam/freshclam.c -@@ -138,7 +138,7 @@ writepid (const char *pidfile) - } - else - { -- fprintf (fd, "%d", (int) getpid ()); -+ fprintf (fd, "%d\n", (int) getpid ()); - fclose (fd); - } - umask (old_umask); diff -Nru clamav-0.98.5+addedllvm/debian/patches/0017-Bump-.so-version-number.patch clamav-0.98.6+dfsg/debian/patches/0017-Bump-.so-version-number.patch --- clamav-0.98.5+addedllvm/debian/patches/0017-Bump-.so-version-number.patch 2014-11-20 19:34:57.000000000 +0000 +++ clamav-0.98.6+dfsg/debian/patches/0017-Bump-.so-version-number.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -From f772ae0e4a230f56e061ecc7a687b1d421fe626e Mon Sep 17 00:00:00 2001 -From: Shawn Webb -Date: Wed, 19 Nov 2014 11:51:22 -0500 -Subject: Bump .so version number - ---- - m4/reorganization/version.m4 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/m4/reorganization/version.m4 b/m4/reorganization/version.m4 -index ea263b28e647..f4fe8b1e150e 100644 ---- a/m4/reorganization/version.m4 -+++ b/m4/reorganization/version.m4 -@@ -3,7 +3,7 @@ dnl VERSION="devel-`date +%Y%m%d`" - VERSION="0.98.5" - - LC_CURRENT=7 --LC_REVISION=22 -+LC_REVISION=24 - LC_AGE=1 - LIBCLAMAV_VERSION="$LC_CURRENT":"$LC_REVISION":"$LC_AGE" - AC_SUBST([LIBCLAMAV_VERSION]) diff -Nru clamav-0.98.5+addedllvm/debian/patches/series clamav-0.98.6+dfsg/debian/patches/series --- clamav-0.98.5+addedllvm/debian/patches/series 2014-11-21 14:24:19.000000000 +0000 +++ clamav-0.98.6+dfsg/debian/patches/series 2015-01-30 14:02:15.000000000 +0000 @@ -1,7 +1,5 @@ 0001-Change-paths-in-sample-conf-file-to-match-Debian.patch -0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch 0003-unit_tests-increment-test-timeout-from-40secs-to-5mi.patch 0006-remove-unnecessary-harmful-flags-from-libclamav.pc.patch 0010-hardcode-LLVM-linker-flag-because-llvm-config-return.patch -0017-Bump-.so-version-number.patch 0018-llvm-don-t-use-system-libs.patch Binary files /tmp/oDKg9sPQcd/clamav-0.98.5+addedllvm/docs/clamdoc.pdf and /tmp/d9rcMEfPFH/clamav-0.98.6+dfsg/docs/clamdoc.pdf differ diff -Nru clamav-0.98.5+addedllvm/docs/clamdoc.tex clamav-0.98.6+dfsg/docs/clamdoc.tex --- clamav-0.98.5+addedllvm/docs/clamdoc.tex 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/clamdoc.tex 2014-12-18 21:43:18.000000000 +0000 @@ -72,7 +72,7 @@ \vspace{3cm} \begin{flushright} \rule[-1ex]{8cm}{3pt}\\ - \huge Clam AntiVirus 0.98.5\\ + \huge Clam AntiVirus 0.98.6\\ \huge \emph{User Manual}\\ \end{flushright} diff -Nru clamav-0.98.5+addedllvm/docs/html/clamdoc.html clamav-0.98.6+dfsg/docs/html/clamdoc.html --- clamav-0.98.5+addedllvm/docs/html/clamdoc.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/clamdoc.html 2014-12-18 21:43:18.000000000 +0000 @@ -55,7 +55,7 @@

-
Clam AntiVirus 0.98.5 +
Clam AntiVirus 0.98.6
User Manual
@@ -237,7 +237,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/index.html clamav-0.98.6+dfsg/docs/html/index.html --- clamav-0.98.5+addedllvm/docs/html/index.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/index.html 2014-12-18 21:43:18.000000000 +0000 @@ -55,7 +55,7 @@

-
Clam AntiVirus 0.98.5 +
Clam AntiVirus 0.98.6
User Manual
@@ -237,7 +237,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node10.html clamav-0.98.6+dfsg/docs/html/node10.html --- clamav-0.98.5+addedllvm/docs/html/node10.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node10.html 2014-12-18 21:43:18.000000000 +0000 @@ -59,7 +59,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node11.html clamav-0.98.6+dfsg/docs/html/node11.html --- clamav-0.98.5+addedllvm/docs/html/node11.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node11.html 2014-12-18 21:43:18.000000000 +0000 @@ -81,7 +81,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node12.html clamav-0.98.6+dfsg/docs/html/node12.html --- clamav-0.98.5+addedllvm/docs/html/node12.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node12.html 2014-12-18 21:43:18.000000000 +0000 @@ -141,7 +141,7 @@ HREF="node1.html">Contents
-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node13.html clamav-0.98.6+dfsg/docs/html/node13.html --- clamav-0.98.5+addedllvm/docs/html/node13.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node13.html 2014-12-18 21:43:18.000000000 +0000 @@ -73,7 +73,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node14.html clamav-0.98.6+dfsg/docs/html/node14.html --- clamav-0.98.5+addedllvm/docs/html/node14.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node14.html 2014-12-18 21:43:18.000000000 +0000 @@ -67,7 +67,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node15.html clamav-0.98.6+dfsg/docs/html/node15.html --- clamav-0.98.5+addedllvm/docs/html/node15.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node15.html 2014-12-18 21:43:18.000000000 +0000 @@ -73,7 +73,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node16.html clamav-0.98.6+dfsg/docs/html/node16.html --- clamav-0.98.5+addedllvm/docs/html/node16.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node16.html 2014-12-18 21:43:18.000000000 +0000 @@ -64,7 +64,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node17.html clamav-0.98.6+dfsg/docs/html/node17.html --- clamav-0.98.5+addedllvm/docs/html/node17.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node17.html 2014-12-18 21:43:18.000000000 +0000 @@ -139,7 +139,7 @@ HREF="node1.html">Contents
-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node18.html clamav-0.98.6+dfsg/docs/html/node18.html --- clamav-0.98.5+addedllvm/docs/html/node18.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node18.html 2014-12-18 21:43:18.000000000 +0000 @@ -95,7 +95,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node19.html clamav-0.98.6+dfsg/docs/html/node19.html --- clamav-0.98.5+addedllvm/docs/html/node19.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node19.html 2014-12-18 21:43:18.000000000 +0000 @@ -85,7 +85,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node1.html clamav-0.98.6+dfsg/docs/html/node1.html --- clamav-0.98.5+addedllvm/docs/html/node1.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node1.html 2014-12-18 21:43:18.000000000 +0000 @@ -194,7 +194,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node20.html clamav-0.98.6+dfsg/docs/html/node20.html --- clamav-0.98.5+addedllvm/docs/html/node20.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node20.html 2014-12-18 21:43:18.000000000 +0000 @@ -89,7 +89,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node21.html clamav-0.98.6+dfsg/docs/html/node21.html --- clamav-0.98.5+addedllvm/docs/html/node21.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node21.html 2014-12-18 21:43:18.000000000 +0000 @@ -77,7 +77,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node22.html clamav-0.98.6+dfsg/docs/html/node22.html --- clamav-0.98.5+addedllvm/docs/html/node22.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node22.html 2014-12-18 21:43:18.000000000 +0000 @@ -66,7 +66,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node23.html clamav-0.98.6+dfsg/docs/html/node23.html --- clamav-0.98.5+addedllvm/docs/html/node23.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node23.html 2014-12-18 21:43:18.000000000 +0000 @@ -90,7 +90,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node24.html clamav-0.98.6+dfsg/docs/html/node24.html --- clamav-0.98.5+addedllvm/docs/html/node24.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node24.html 2014-12-18 21:43:18.000000000 +0000 @@ -73,7 +73,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node25.html clamav-0.98.6+dfsg/docs/html/node25.html --- clamav-0.98.5+addedllvm/docs/html/node25.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node25.html 2014-12-18 21:43:18.000000000 +0000 @@ -138,7 +138,7 @@ HREF="node1.html">Contents
-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node26.html clamav-0.98.6+dfsg/docs/html/node26.html --- clamav-0.98.5+addedllvm/docs/html/node26.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node26.html 2014-12-18 21:43:18.000000000 +0000 @@ -75,7 +75,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node27.html clamav-0.98.6+dfsg/docs/html/node27.html --- clamav-0.98.5+addedllvm/docs/html/node27.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node27.html 2014-12-18 21:43:18.000000000 +0000 @@ -107,7 +107,7 @@ HREF="node1.html">Contents
-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node28.html clamav-0.98.6+dfsg/docs/html/node28.html --- clamav-0.98.5+addedllvm/docs/html/node28.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node28.html 2014-12-18 21:43:18.000000000 +0000 @@ -88,7 +88,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node29.html clamav-0.98.6+dfsg/docs/html/node29.html --- clamav-0.98.5+addedllvm/docs/html/node29.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node29.html 2014-12-18 21:43:18.000000000 +0000 @@ -233,7 +233,7 @@ HREF="node1.html">Contents
-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node2.html clamav-0.98.6+dfsg/docs/html/node2.html --- clamav-0.98.5+addedllvm/docs/html/node2.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node2.html 2014-12-18 21:43:18.000000000 +0000 @@ -77,7 +77,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node30.html clamav-0.98.6+dfsg/docs/html/node30.html --- clamav-0.98.5+addedllvm/docs/html/node30.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node30.html 2014-12-18 21:43:18.000000000 +0000 @@ -74,7 +74,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node31.html clamav-0.98.6+dfsg/docs/html/node31.html --- clamav-0.98.5+addedllvm/docs/html/node31.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node31.html 2014-12-18 21:43:18.000000000 +0000 @@ -89,7 +89,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node32.html clamav-0.98.6+dfsg/docs/html/node32.html --- clamav-0.98.5+addedllvm/docs/html/node32.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node32.html 2014-12-18 21:43:18.000000000 +0000 @@ -68,7 +68,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node33.html clamav-0.98.6+dfsg/docs/html/node33.html --- clamav-0.98.5+addedllvm/docs/html/node33.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node33.html 2014-12-18 21:43:18.000000000 +0000 @@ -70,7 +70,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node34.html clamav-0.98.6+dfsg/docs/html/node34.html --- clamav-0.98.5+addedllvm/docs/html/node34.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node34.html 2014-12-18 21:43:18.000000000 +0000 @@ -61,7 +61,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node35.html clamav-0.98.6+dfsg/docs/html/node35.html --- clamav-0.98.5+addedllvm/docs/html/node35.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node35.html 2014-12-18 21:43:18.000000000 +0000 @@ -84,7 +84,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node36.html clamav-0.98.6+dfsg/docs/html/node36.html --- clamav-0.98.5+addedllvm/docs/html/node36.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node36.html 2014-12-18 21:43:18.000000000 +0000 @@ -114,7 +114,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node37.html clamav-0.98.6+dfsg/docs/html/node37.html --- clamav-0.98.5+addedllvm/docs/html/node37.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node37.html 2014-12-18 21:43:18.000000000 +0000 @@ -68,7 +68,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node38.html clamav-0.98.6+dfsg/docs/html/node38.html --- clamav-0.98.5+addedllvm/docs/html/node38.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node38.html 2014-12-18 21:43:18.000000000 +0000 @@ -79,7 +79,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node39.html clamav-0.98.6+dfsg/docs/html/node39.html --- clamav-0.98.5+addedllvm/docs/html/node39.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node39.html 2014-12-18 21:43:18.000000000 +0000 @@ -81,7 +81,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node3.html clamav-0.98.6+dfsg/docs/html/node3.html --- clamav-0.98.5+addedllvm/docs/html/node3.html 2014-11-13 22:31:30.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node3.html 2014-12-18 21:43:18.000000000 +0000 @@ -214,7 +214,7 @@ HREF="node1.html">Contents
-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node40.html clamav-0.98.6+dfsg/docs/html/node40.html --- clamav-0.98.5+addedllvm/docs/html/node40.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node40.html 2014-12-18 21:43:18.000000000 +0000 @@ -127,7 +127,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node41.html clamav-0.98.6+dfsg/docs/html/node41.html --- clamav-0.98.5+addedllvm/docs/html/node41.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node41.html 2014-12-18 21:43:18.000000000 +0000 @@ -61,7 +61,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node42.html clamav-0.98.6+dfsg/docs/html/node42.html --- clamav-0.98.5+addedllvm/docs/html/node42.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node42.html 2014-12-18 21:43:18.000000000 +0000 @@ -77,7 +77,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node43.html clamav-0.98.6+dfsg/docs/html/node43.html --- clamav-0.98.5+addedllvm/docs/html/node43.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node43.html 2014-12-18 21:43:18.000000000 +0000 @@ -85,7 +85,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node44.html clamav-0.98.6+dfsg/docs/html/node44.html --- clamav-0.98.5+addedllvm/docs/html/node44.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node44.html 2014-12-18 21:43:18.000000000 +0000 @@ -60,7 +60,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node45.html clamav-0.98.6+dfsg/docs/html/node45.html --- clamav-0.98.5+addedllvm/docs/html/node45.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node45.html 2014-12-18 21:43:18.000000000 +0000 @@ -118,7 +118,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node46.html clamav-0.98.6+dfsg/docs/html/node46.html --- clamav-0.98.5+addedllvm/docs/html/node46.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node46.html 2014-12-18 21:43:18.000000000 +0000 @@ -74,7 +74,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node47.html clamav-0.98.6+dfsg/docs/html/node47.html --- clamav-0.98.5+addedllvm/docs/html/node47.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node47.html 2014-12-18 21:43:18.000000000 +0000 @@ -68,7 +68,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node48.html clamav-0.98.6+dfsg/docs/html/node48.html --- clamav-0.98.5+addedllvm/docs/html/node48.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node48.html 2014-12-18 21:43:18.000000000 +0000 @@ -73,7 +73,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node49.html clamav-0.98.6+dfsg/docs/html/node49.html --- clamav-0.98.5+addedllvm/docs/html/node49.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node49.html 2014-12-18 21:43:18.000000000 +0000 @@ -89,7 +89,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node4.html clamav-0.98.6+dfsg/docs/html/node4.html --- clamav-0.98.5+addedllvm/docs/html/node4.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node4.html 2014-12-18 21:43:18.000000000 +0000 @@ -84,7 +84,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node50.html clamav-0.98.6+dfsg/docs/html/node50.html --- clamav-0.98.5+addedllvm/docs/html/node50.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node50.html 2014-12-18 21:43:18.000000000 +0000 @@ -62,7 +62,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node51.html clamav-0.98.6+dfsg/docs/html/node51.html --- clamav-0.98.5+addedllvm/docs/html/node51.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node51.html 2014-12-18 21:43:18.000000000 +0000 @@ -71,7 +71,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node52.html clamav-0.98.6+dfsg/docs/html/node52.html --- clamav-0.98.5+addedllvm/docs/html/node52.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node52.html 2014-12-18 21:43:18.000000000 +0000 @@ -123,7 +123,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node53.html clamav-0.98.6+dfsg/docs/html/node53.html --- clamav-0.98.5+addedllvm/docs/html/node53.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node53.html 2014-12-18 21:43:18.000000000 +0000 @@ -67,7 +67,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node54.html clamav-0.98.6+dfsg/docs/html/node54.html --- clamav-0.98.5+addedllvm/docs/html/node54.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node54.html 2014-12-18 21:43:18.000000000 +0000 @@ -73,7 +73,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node55.html clamav-0.98.6+dfsg/docs/html/node55.html --- clamav-0.98.5+addedllvm/docs/html/node55.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node55.html 2014-12-18 21:43:18.000000000 +0000 @@ -77,7 +77,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node56.html clamav-0.98.6+dfsg/docs/html/node56.html --- clamav-0.98.5+addedllvm/docs/html/node56.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node56.html 2014-12-18 21:43:18.000000000 +0000 @@ -101,7 +101,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node57.html clamav-0.98.6+dfsg/docs/html/node57.html --- clamav-0.98.5+addedllvm/docs/html/node57.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node57.html 2014-12-18 21:43:18.000000000 +0000 @@ -219,7 +219,7 @@ HREF="node1.html">Contents
-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node58.html clamav-0.98.6+dfsg/docs/html/node58.html --- clamav-0.98.5+addedllvm/docs/html/node58.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node58.html 2014-12-18 21:43:18.000000000 +0000 @@ -61,7 +61,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node59.html clamav-0.98.6+dfsg/docs/html/node59.html --- clamav-0.98.5+addedllvm/docs/html/node59.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node59.html 2014-12-18 21:43:18.000000000 +0000 @@ -63,7 +63,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node5.html clamav-0.98.6+dfsg/docs/html/node5.html --- clamav-0.98.5+addedllvm/docs/html/node5.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node5.html 2014-12-18 21:43:18.000000000 +0000 @@ -63,7 +63,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node60.html clamav-0.98.6+dfsg/docs/html/node60.html --- clamav-0.98.5+addedllvm/docs/html/node60.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node60.html 2014-12-18 21:43:18.000000000 +0000 @@ -65,7 +65,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node61.html clamav-0.98.6+dfsg/docs/html/node61.html --- clamav-0.98.5+addedllvm/docs/html/node61.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node61.html 2014-12-18 21:43:18.000000000 +0000 @@ -63,7 +63,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node62.html clamav-0.98.6+dfsg/docs/html/node62.html --- clamav-0.98.5+addedllvm/docs/html/node62.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node62.html 2014-12-18 21:43:18.000000000 +0000 @@ -80,7 +80,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node63.html clamav-0.98.6+dfsg/docs/html/node63.html --- clamav-0.98.5+addedllvm/docs/html/node63.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node63.html 2014-12-18 21:43:18.000000000 +0000 @@ -610,7 +610,7 @@ HREF="node1.html">Contents
-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node64.html clamav-0.98.6+dfsg/docs/html/node64.html --- clamav-0.98.5+addedllvm/docs/html/node64.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node64.html 2014-12-18 21:43:18.000000000 +0000 @@ -456,7 +456,7 @@ HREF="node1.html">Contents
-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node65.html clamav-0.98.6+dfsg/docs/html/node65.html --- clamav-0.98.5+addedllvm/docs/html/node65.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node65.html 2014-12-18 21:43:18.000000000 +0000 @@ -61,7 +61,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node66.html clamav-0.98.6+dfsg/docs/html/node66.html --- clamav-0.98.5+addedllvm/docs/html/node66.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node66.html 2014-12-18 21:43:18.000000000 +0000 @@ -60,7 +60,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node67.html clamav-0.98.6+dfsg/docs/html/node67.html --- clamav-0.98.5+addedllvm/docs/html/node67.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node67.html 2014-12-18 21:43:18.000000000 +0000 @@ -135,7 +135,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node68.html clamav-0.98.6+dfsg/docs/html/node68.html --- clamav-0.98.5+addedllvm/docs/html/node68.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node68.html 2014-12-18 21:43:18.000000000 +0000 @@ -126,7 +126,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node6.html clamav-0.98.6+dfsg/docs/html/node6.html --- clamav-0.98.5+addedllvm/docs/html/node6.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node6.html 2014-12-18 21:43:18.000000000 +0000 @@ -76,7 +76,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node7.html clamav-0.98.6+dfsg/docs/html/node7.html --- clamav-0.98.5+addedllvm/docs/html/node7.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node7.html 2014-12-18 21:43:18.000000000 +0000 @@ -67,7 +67,7 @@

-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node8.html clamav-0.98.6+dfsg/docs/html/node8.html --- clamav-0.98.5+addedllvm/docs/html/node8.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node8.html 2014-12-18 21:43:18.000000000 +0000 @@ -75,7 +75,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/html/node9.html clamav-0.98.6+dfsg/docs/html/node9.html --- clamav-0.98.5+addedllvm/docs/html/node9.html 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/html/node9.html 2014-12-18 21:43:18.000000000 +0000 @@ -58,7 +58,7 @@



-Cisco 2014-11-12 +Cisco 2014-11-21
diff -Nru clamav-0.98.5+addedllvm/docs/man/clamd.conf.5.in clamav-0.98.6+dfsg/docs/man/clamd.conf.5.in --- clamav-0.98.5+addedllvm/docs/man/clamd.conf.5.in 2014-11-13 22:30:38.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/man/clamd.conf.5.in 2014-12-18 21:42:47.000000000 +0000 @@ -319,7 +319,7 @@ .br \fBForceJIT\fR \- always choose JIT, fail if not possible .br -\fBForceIntepreter\fR \- always choose interpreter +\fBForceInterpreter\fR \- always choose interpreter .br \fBTest\fR \- run with both JIT and interpreter and compare results. Make all failures fatal. .RE diff -Nru clamav-0.98.5+addedllvm/docs/man/clamsubmit.1.in clamav-0.98.6+dfsg/docs/man/clamsubmit.1.in --- clamav-0.98.5+addedllvm/docs/man/clamsubmit.1.in 2014-11-13 22:30:38.000000000 +0000 +++ clamav-0.98.6+dfsg/docs/man/clamsubmit.1.in 2014-12-18 21:42:47.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "Config tool" "1" "March 20, 2014" "ClamAV @VERSION@" "Clam AntiVirus" +.TH "File submission tool" "1" "March 20, 2014" "ClamAV @VERSION@" "Clam AntiVirus" .SH "NAME" .LP clamsubmit \- File submission utility for ClamAV @@ -26,8 +26,6 @@ .TP \fB-p FILE\fR Submit a file that reports as a false positive (ClamAV flags the file as virus). FILE can be \- to specify stdin. Mutually exclusive with \-n. -.SH "CREDITS" -The idea of this tool is based on Postfix's postconf. clamconf was created under pressure from Tomasz Papszun ;-) .SH "AUTHOR" .LP Shawn Webb Binary files /tmp/oDKg9sPQcd/clamav-0.98.5+addedllvm/docs/phishsigs_howto.pdf and /tmp/d9rcMEfPFH/clamav-0.98.6+dfsg/docs/phishsigs_howto.pdf differ Binary files /tmp/oDKg9sPQcd/clamav-0.98.5+addedllvm/docs/signatures.pdf and /tmp/d9rcMEfPFH/clamav-0.98.6+dfsg/docs/signatures.pdf differ diff -Nru clamav-0.98.5+addedllvm/freshclam/freshclam.c clamav-0.98.6+dfsg/freshclam/freshclam.c --- clamav-0.98.5+addedllvm/freshclam/freshclam.c 2014-11-13 22:30:38.000000000 +0000 +++ clamav-0.98.6+dfsg/freshclam/freshclam.c 2014-12-18 21:42:47.000000000 +0000 @@ -135,7 +135,7 @@ } else { - fprintf (fd, "%d", (int) getpid ()); + fprintf (fd, "%d\n", (int) getpid ()); fclose (fd); } umask (old_umask); @@ -244,7 +244,7 @@ opt = (struct optstruct *) opt->nextarg; if (!opt) { - logg ("Update failed. Your network may be down or none of the mirrors listed in %s is working. Check http://www.clamav.net/documentation.html for possible reasons.\n", cfgfile); + logg ("Update failed. Your network may be down or none of the mirrors listed in %s is working. Check http://www.clamav.net/doc/mirrors-faq.html for possible reasons.\n", cfgfile); } } diff -Nru clamav-0.98.5+addedllvm/freshclam/Makefile.am clamav-0.98.6+dfsg/freshclam/Makefile.am --- clamav-0.98.5+addedllvm/freshclam/Makefile.am 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/freshclam/Makefile.am 2014-12-18 21:43:18.000000000 +0000 @@ -51,7 +51,7 @@ AM_CFLAGS=@WERR_CFLAGS@ DEFS = @DEFS@ -DCL_NOTHREADS -AM_CPPFLAGS = @SSL_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @FRESHCLAM_CPPFLAGS@ @JSON_CPPFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @FRESHCLAM_CPPFLAGS@ @JSON_CPPFLAGS@ LIBS = @SSL_LDFLAGS@ @SSL_LIBS@ $(top_builddir)/libclamav/libclamav.la @FRESHCLAM_LIBS@ @THREAD_LIBS@ AM_INSTALLCHECK_STD_OPTIONS_EXEMPT=freshclam$(EXEEXT) diff -Nru clamav-0.98.5+addedllvm/freshclam/Makefile.in clamav-0.98.6+dfsg/freshclam/Makefile.in --- clamav-0.98.5+addedllvm/freshclam/Makefile.in 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/freshclam/Makefile.in 2014-12-18 21:43:18.000000000 +0000 @@ -472,7 +472,7 @@ mirman.h AM_CFLAGS = @WERR_CFLAGS@ -AM_CPPFLAGS = @SSL_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @FRESHCLAM_CPPFLAGS@ @JSON_CPPFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @FRESHCLAM_CPPFLAGS@ @JSON_CPPFLAGS@ AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = freshclam$(EXEEXT) CLEANFILES = *.gcda *.gcno all: all-am diff -Nru clamav-0.98.5+addedllvm/freshclam/manager.c clamav-0.98.6+dfsg/freshclam/manager.c --- clamav-0.98.5+addedllvm/freshclam/manager.c 2014-11-13 22:30:38.000000000 +0000 +++ clamav-0.98.6+dfsg/freshclam/manager.c 2014-12-18 21:42:47.000000000 +0000 @@ -2060,7 +2060,7 @@ logg ("^Current functionality level = %d, recommended = %d\n", flevel, current->fl); logg ("Please check if ClamAV tools are linked against the proper version of libclamav\n"); - logg ("DON'T PANIC! Read http://www.clamav.net/documentation.html\n"); + logg ("DON'T PANIC! Read http://www.clamav.net/doc/install.html\n"); } *signo += current->sigs; diff -Nru clamav-0.98.5+addedllvm/libclamav/bytecode_api.h clamav-0.98.6+dfsg/libclamav/bytecode_api.h --- clamav-0.98.5+addedllvm/libclamav/bytecode_api.h 2014-11-13 22:30:38.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/bytecode_api.h 2014-12-18 21:42:47.000000000 +0000 @@ -100,7 +100,9 @@ FUNC_LEVEL_098_1 = 76, /**< LibClamAV release 0.98.2 */ /*last syncing to clamav*/ FUNC_LEVEL_098_2 = 77, /**< LibClamAV release 0.98.2 */ FUNC_LEVEL_098_3 = 77, /**< LibClamAV release 0.98.3 */ - FUNC_LEVEL_098_4 = 78, /**< LibClamAV release 0.98.4: JSON reading API requires this minimum level */ + FUNC_LEVEL_098_4 = 77, /**< LibClamAV release 0.98.4 */ + FUNC_LEVEL_098_5 = 79, /**< LibClamAV release 0.98.5: JSON reading API requires this minimum level */ + FUNC_LEVEL_098_6 = 79, /**< LibClamAV release 0.98.6 */ FUNC_LEVEL_100 = 100 /*future release candidate*/ }; diff -Nru clamav-0.98.5+addedllvm/libclamav/crypto.c clamav-0.98.6+dfsg/libclamav/crypto.c --- clamav-0.98.5+addedllvm/libclamav/crypto.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/crypto.c 2014-12-18 21:42:47.000000000 +0000 @@ -60,11 +60,22 @@ #include "others.h" #include "libclamav/conv.h" #include "libclamav/str.h" +#include "iowrap.h" #if defined(_WIN32) char * strptime(const char *buf, const char *fmt, struct tm *tm); #endif +#if defined(_WIN32) +#define EXCEPTION_PREAMBLE __try { +#define EXCEPTION_POSTAMBLE } __except (filter_memcpy(GetExceptionCode(), GetExceptionInformation())) { \ + winres=1; \ +} +#else +#define EXCEPTION_PREAMBLE +#define EXCEPTION_POSTAMBLE +#endif + #if !defined(MIN) #define MIN(x,y) ((x)<(y)?(x):(y)) #endif @@ -132,6 +143,7 @@ const EVP_MD *md; unsigned int i; size_t cur; + int winres=0; md = EVP_get_digestbyname(alg); if (!(md)) @@ -170,6 +182,8 @@ cur=0; while (cur < len) { size_t todo = MIN((unsigned long)EVP_MD_block_size(md), (unsigned long)(len-cur)); + + EXCEPTION_PREAMBLE if (!EVP_DigestUpdate(ctx, (void *)(((unsigned char *)buf)+cur), todo)) { if (!(obuf)) free(ret); @@ -180,6 +194,18 @@ EVP_MD_CTX_destroy(ctx); return NULL; } + EXCEPTION_POSTAMBLE + + if (winres) { + if (!(obuf)) + free(ret); + + if ((olen)) + *olen = 0; + + EVP_MD_CTX_destroy(ctx); + return NULL; + } cur += todo; } @@ -240,6 +266,7 @@ int mdsz; unsigned int hashlen; STATBUF sb; + int winres=0; unsigned int blocksize; @@ -277,12 +304,21 @@ #else while ((nread = read(fd, buf, blocksize)) > 0) { #endif + EXCEPTION_PREAMBLE if (!EVP_DigestUpdate(ctx, buf, nread)) { free(buf); free(hash); return NULL; } + EXCEPTION_POSTAMBLE + + if (winres) { + free(buf); + free(hash); + + return NULL; + } } if (!EVP_DigestFinal_ex(ctx, hash, &hashlen)) { @@ -1123,11 +1159,18 @@ int cl_update_hash(void *ctx, void *data, size_t sz) { + int winres=0; + if (!(ctx) || !(data)) return -1; + EXCEPTION_PREAMBLE if (!EVP_DigestUpdate((EVP_MD_CTX *)ctx, data, sz)) return -1; + EXCEPTION_POSTAMBLE + + if (winres) + return -1; return 0; } diff -Nru clamav-0.98.5+addedllvm/libclamav/cvd.c clamav-0.98.6+dfsg/libclamav/cvd.c --- clamav-0.98.5+addedllvm/libclamav/cvd.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/cvd.c 2014-12-18 21:42:47.000000000 +0000 @@ -660,7 +660,7 @@ if(cvd.fl > cl_retflevel()) { cli_warnmsg("***********************************************************\n"); cli_warnmsg("*** This version of the ClamAV engine is outdated. ***\n"); - cli_warnmsg("*** Read http://www.clamav.net/documentation.html ***\n"); + cli_warnmsg("*** Read http://www.clamav.net/doc/install.html ***\n"); cli_warnmsg("***********************************************************\n"); } diff -Nru clamav-0.98.5+addedllvm/libclamav/filetypes.c clamav-0.98.6+dfsg/libclamav/filetypes.c --- clamav-0.98.5+addedllvm/libclamav/filetypes.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/filetypes.c 2014-12-18 21:42:47.000000000 +0000 @@ -41,6 +41,7 @@ #include "iowrap.h" #include "mbr.h" #include "gpt.h" +#include "ooxml.h" #include "htmlnorm.h" #include "entconv.h" diff -Nru clamav-0.98.5+addedllvm/libclamav/iowrap.c clamav-0.98.6+dfsg/libclamav/iowrap.c --- clamav-0.98.5+addedllvm/libclamav/iowrap.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/iowrap.c 2014-12-18 21:42:47.000000000 +0000 @@ -33,7 +33,7 @@ #endif #ifdef _WIN32 -static int filter_memcpy(unsigned int code, struct _EXCEPTION_POINTERS *ep) { +int filter_memcpy(unsigned int code, struct _EXCEPTION_POINTERS *ep) { if ((code == EXCEPTION_IN_PAGE_ERROR) || (code == STATUS_DEVICE_DATA_ERROR)) { return EXCEPTION_EXECUTE_HANDLER; } diff -Nru clamav-0.98.5+addedllvm/libclamav/iowrap.h clamav-0.98.6+dfsg/libclamav/iowrap.h --- clamav-0.98.5+addedllvm/libclamav/iowrap.h 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/iowrap.h 2014-12-18 21:42:47.000000000 +0000 @@ -42,4 +42,8 @@ */ int cli_memcpy(void *target, const void *source, unsigned long size); +#ifdef _WIN32 +int filter_memcpy(unsigned int code, struct _EXCEPTION_POINTERS *ep); +#endif + #endif diff -Nru clamav-0.98.5+addedllvm/libclamav/jsparse/js-norm.c clamav-0.98.6+dfsg/libclamav/jsparse/js-norm.c --- clamav-0.98.5+addedllvm/libclamav/jsparse/js-norm.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/jsparse/js-norm.c 2014-12-18 21:42:47.000000000 +0000 @@ -525,7 +525,8 @@ { const size_t len = with ? with->cnt : 0; size_t i; - cli_dbgmsg(MODULE "Replacing tokens %lu - %lu with %lu tokens\n",start, end, len); + cli_dbgmsg(MODULE "Replacing tokens %lu - %lu with %lu tokens\n", (unsigned long)start, + (unsigned long)end, (unsigned long)len); if(start >= dst->cnt || end > dst->cnt) return -1; for(i=start;icnt + src->cnt)) return CL_EMEM; - cli_dbgmsg(MODULE "Appending %lu tokens\n", src->cnt); + cli_dbgmsg(MODULE "Appending %lu tokens\n", (unsigned long)(src->cnt)); memcpy(&dst->data[dst->cnt], src->data, src->cnt * sizeof(dst->data[0])); dst->cnt += src->cnt; return CL_SUCCESS; @@ -1110,7 +1111,7 @@ TOKEN_SET(&val, scope, state->current); break; case TOK_StringLiteral: - if(state->tokens.cnt > 0 && state->tokens.data[state->tokens.cnt-1].type == TOK_PLUS) { + if(state->tokens.cnt > 1 && state->tokens.data[state->tokens.cnt-1].type == TOK_PLUS) { /* see if can fold */ yystype *prev_string = &state->tokens.data[state->tokens.cnt-2]; if(prev_string->type == TOK_StringLiteral) { diff -Nru clamav-0.98.5+addedllvm/libclamav/mbox.c clamav-0.98.6+dfsg/libclamav/mbox.c --- clamav-0.98.5+addedllvm/libclamav/mbox.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/mbox.c 2014-12-18 21:43:18.000000000 +0000 @@ -3315,7 +3315,7 @@ return NULL; } if((buffer_len == 0) || (buffer == NULL)) { - cli_errmsg("Invalid call to getline_from_mbox(). Refer to http://www.clamav.net/documentation.html\n"); + cli_errmsg("Invalid call to getline_from_mbox(). Refer to http://www.clamav.net/doc/install.html\n"); return NULL; } diff -Nru clamav-0.98.5+addedllvm/libclamav/mew.c clamav-0.98.6+dfsg/libclamav/mew.c --- clamav-0.98.5+addedllvm/libclamav/mew.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/mew.c 2014-12-18 21:43:18.000000000 +0000 @@ -889,7 +889,7 @@ section[0].raw = 0; section[0].rva = vadd; section[0].rsz = section[0].vsz = dsize; } - if (!cli_rebuildpe(src, section, i, base, entry_point - base, 0, 0, filedesc)) + if (!cli_rebuildpe_align(src, section, i, base, entry_point - base, 0, 0, filedesc, 0x1000)) { cli_dbgmsg("MEW: Rebuilding failed\n"); free(section); diff -Nru clamav-0.98.5+addedllvm/libclamav/mpool.c clamav-0.98.6+dfsg/libclamav/mpool.c --- clamav-0.98.5+addedllvm/libclamav/mpool.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/mpool.c 2014-12-18 21:42:47.000000000 +0000 @@ -623,7 +623,11 @@ struct FRAG *fold = f; mp->avail[sbits] = f->u.next.ptr; /* we always have enough space for this, align_increase ensured that */ +#ifdef _WIN64 + f = (struct FRAG*)(alignto((unsigned long long)f + FRAG_OVERHEAD, align)-FRAG_OVERHEAD); +#else f = (struct FRAG*)(alignto((unsigned long)f + FRAG_OVERHEAD, align)-FRAG_OVERHEAD); +#endif f->u.a.sbits = sbits; f->u.a.padding = (char*)f - (char*)fold; #ifdef CL_DEBUG diff -Nru clamav-0.98.5+addedllvm/libclamav/ole2_extract.c clamav-0.98.6+dfsg/libclamav/ole2_extract.c --- clamav-0.98.5+addedllvm/libclamav/ole2_extract.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/ole2_extract.c 2014-12-18 21:42:47.000000000 +0000 @@ -358,22 +358,21 @@ if (!hdr || !cli_debug_flag) { return; } - cli_dbgmsg("\nMagic:\t\t\t0x"); - for (i = 0; i < 8; i++) { - cli_dbgmsg("%x", hdr->magic[i]); - } cli_dbgmsg("\n"); + cli_dbgmsg("Magic:\t\t\t0x%x%x%x%x%x%x%x%x\n", + hdr->magic[0], hdr->magic[1], hdr->magic[2], hdr->magic[3], + hdr->magic[4], hdr->magic[5], hdr->magic[6], hdr->magic[7]); - cli_dbgmsg("CLSID:\t\t\t{"); - for (i = 0; i < 16; i++) { - cli_dbgmsg("%x ", hdr->clsid[i]); - } - cli_dbgmsg("}\n"); + cli_dbgmsg("CLSID:\t\t\t{%x%x%x%x-%x%x-%x%x-%x%x-%x%x%x%x%x%x}\n", + hdr->clsid[0], hdr->clsid[1], hdr->clsid[2], hdr->clsid[3], + hdr->clsid[4], hdr->clsid[5], hdr->clsid[6], hdr->clsid[7], + hdr->clsid[8], hdr->clsid[9], hdr->clsid[10], hdr->clsid[11], + hdr->clsid[12], hdr->clsid[13], hdr->clsid[14], hdr->clsid[15]); cli_dbgmsg("Minor version:\t\t0x%x\n", hdr->minor_version); cli_dbgmsg("DLL version:\t\t0x%x\n", hdr->dll_version); cli_dbgmsg("Byte Order:\t\t%d\n", hdr->byte_order); - cli_dbgmsg("Big Block Size:\t\t%i\n", hdr->log2_big_block_size); + cli_dbgmsg("Big Block Size:\t%i\n", hdr->log2_big_block_size); cli_dbgmsg("Small Block Size:\t%i\n", hdr->log2_small_block_size); cli_dbgmsg("BAT count:\t\t%d\n", hdr->bat_count); cli_dbgmsg("Prop start:\t\t%d\n", hdr->prop_start); @@ -381,7 +380,8 @@ cli_dbgmsg("SBat start:\t\t%d\n", hdr->sbat_start); cli_dbgmsg("SBat block count:\t%d\n", hdr->sbat_block_count); cli_dbgmsg("XBat start:\t\t%d\n", hdr->xbat_start); - cli_dbgmsg("XBat block count:\t%d\n\n", hdr->xbat_count); + cli_dbgmsg("XBat block count:\t%d\n", hdr->xbat_count); + cli_dbgmsg("\n"); return; } diff -Nru clamav-0.98.5+addedllvm/libclamav/ooxml.c clamav-0.98.6+dfsg/libclamav/ooxml.c --- clamav-0.98.5+addedllvm/libclamav/ooxml.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/ooxml.c 2014-12-18 21:42:47.000000000 +0000 @@ -78,11 +78,29 @@ return 1; } +static int ooxml_add_parse_error(json_object *wrkptr, const xmlChar *errstr) +{ + json_object *perr; + + if (!wrkptr) + return CL_ENULLARG; + + perr = cli_jsonarray(wrkptr, "ParseErrors"); + if (perr == NULL) { + return CL_EMEM; + } + + return cli_jsonstr(perr, NULL, errstr); +} + static int ooxml_parse_value(json_object *wrkptr, const char *arrname, const xmlChar *node_value) { json_object *newobj, *arrobj; int val; + if (!wrkptr) + return CL_ENULLARG; + arrobj = cli_jsonarray(wrkptr, arrname); if (arrobj == NULL) { return CL_EMEM; @@ -247,7 +265,7 @@ if (node_type != XML_READER_TYPE_ELEMENT) { cli_dbgmsg("ooxml_parse_element: first node typed %d, not %d\n", node_type, XML_READER_TYPE_ELEMENT); - return CL_EPARSE; /* first type is not an element */ + return CL_EFORMAT; /* first type is not an element */ } node_name = xmlTextReaderConstLocalName(reader); @@ -267,7 +285,7 @@ /* generate json object */ thisjobj = cli_jsonobj(wrkptr, element_tag); if (!thisjobj) { - return CL_EPARSE; + return CL_EMEM; } cli_dbgmsg("ooxml_parse_element: generated json object [%s]\n", element_tag); @@ -386,6 +404,17 @@ return CL_SUCCESS; } +static int ooxml_updatelimits(int fd, cli_ctx *ctx) +{ + STATBUF sb; + if (FSTAT(fd, &sb) == -1) { + cli_errmsg("ooxml_updatelimits: Can't fstat descriptor %d\n", fd); + return CL_ESTAT; + } + + return cli_updatelimits(ctx, sb.st_size); +} + static int ooxml_parse_document(int fd, cli_ctx *ctx) { int ret = CL_SUCCESS; @@ -393,6 +422,11 @@ cli_dbgmsg("in ooxml_parse_document\n"); + /* perform engine limit checks in temporary tracking session */ + ret = ooxml_updatelimits(fd, ctx); + if (ret != CL_CLEAN) + return ret; + reader = xmlReaderForFd(fd, "properties.xml", NULL, CLAMAV_MIN_XMLREADER_FLAGS); if (reader == NULL) { cli_dbgmsg("ooxml_parse_document: xmlReaderForFd error\n"); @@ -406,10 +440,8 @@ ret = ooxml_parse_element(ctx, reader, ctx->wrkproperty, 0, NULL); - if (ret != CL_SUCCESS && ret != CL_ETIMEOUT && ret != CL_BREAK) { + if (ret != CL_SUCCESS && ret != CL_ETIMEOUT && ret != CL_BREAK) cli_warnmsg("ooxml_parse_document: encountered issue in parsing properties document\n"); - cli_jsonbool(ctx->wrkproperty, "ParseError", 1); - } xmlTextReaderClose(reader); xmlFreeTextReader(reader); @@ -418,37 +450,64 @@ static int ooxml_core_cb(int fd, cli_ctx *ctx) { + int ret; + cli_dbgmsg("in ooxml_core_cb\n"); - return ooxml_parse_document(fd, ctx); - //return ooxml_basic_json(fd, ctx, "CoreProperties"); + ret = ooxml_parse_document(fd, ctx); + if (ret == CL_EPARSE) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_CORE_XMLPARSER"); + else if (ret == CL_EFORMAT) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_CORE_MALFORMED"); + + return ret; } static int ooxml_extn_cb(int fd, cli_ctx *ctx) { + int ret; + cli_dbgmsg("in ooxml_extn_cb\n"); - return ooxml_parse_document(fd, ctx); - //return ooxml_basic_json(fd, ctx, "ExtendedProperties"); + ret = ooxml_parse_document(fd, ctx); + if (ret == CL_EPARSE) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_EXTN_XMLPARSER"); + else if (ret == CL_EFORMAT) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_EXTN_MALFORMED"); + + return ret; } static int ooxml_content_cb(int fd, cli_ctx *ctx) { - int ret = CL_SUCCESS, tmp, toval = 0; + int ret = CL_SUCCESS, tmp, toval = 0, state; int core=0, extn=0, cust=0, dsig=0; int mcore=0, mextn=0, mcust=0; const xmlChar *name, *value, *CT, *PN; xmlTextReaderPtr reader = NULL; uint32_t loff; + unsigned long sav_scansize = ctx->scansize; + unsigned int sav_scannedfiles = ctx->scannedfiles; + cli_dbgmsg("in ooxml_content_cb\n"); + /* perform engine limit checks in temporary tracking session */ + ret = ooxml_updatelimits(fd, ctx); + if (ret != CL_CLEAN) + return ret; + + /* apply a reader to the document */ reader = xmlReaderForFd(fd, "[Content_Types].xml", NULL, CLAMAV_MIN_XMLREADER_FLAGS); if (reader == NULL) { cli_dbgmsg("ooxml_content_cb: xmlReaderForFd error for ""[Content_Types].xml""\n"); + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_XML_READER_FD"); + + ctx->scansize = sav_scansize; + ctx->scannedfiles = sav_scannedfiles; return CL_SUCCESS; // libxml2 failed! } - /* locate core-properties, extended-properties, and custom-properties (optional) */ - while (xmlTextReaderRead(reader) == 1) { + /* locate core-properties, extended-properties, and custom-properties (optional) */ + while ((state = xmlTextReaderRead(reader)) == 1) { if (cli_json_timeout_cycle_check(ctx, &toval) != CL_SUCCESS) { ret = CL_ETIMEOUT; goto ooxml_content_exit; @@ -480,93 +539,116 @@ if (!CT && !PN) continue; if (!xmlStrcmp(CT, (const xmlChar *)"application/vnd.openxmlformats-package.core-properties+xml")) { - if (!core) { - /* default: /docProps/core.xml*/ - tmp = unzip_search_single(ctx, (const char *)(PN+1), xmlStrlen(PN)-1, &loff); - if (tmp == CL_ETIMEOUT) { - ret = tmp; - } - else if (tmp != CL_VIRUS) { - cli_dbgmsg("cli_process_ooxml: failed to find core properties file \"%s\"!\n", PN); - mcore++; - } - else { - cli_dbgmsg("ooxml_content_cb: found core properties file \"%s\" @ %x\n", PN, loff); - ret = unzip_single_internal(ctx, loff, ooxml_core_cb); - core++; + /* default: /docProps/core.xml*/ + tmp = unzip_search_single(ctx, (const char *)(PN+1), xmlStrlen(PN)-1, &loff); + if (tmp == CL_ETIMEOUT) { + ret = tmp; + } + else if (tmp != CL_VIRUS) { + cli_dbgmsg("cli_process_ooxml: failed to find core properties file \"%s\"!\n", PN); + mcore++; + } + else { + cli_dbgmsg("ooxml_content_cb: found core properties file \"%s\" @ %x\n", PN, loff); + if (!core) { + tmp = unzip_single_internal(ctx, loff, ooxml_core_cb); + if (tmp == CL_ETIMEOUT || tmp == CL_EMEM) { + ret = tmp; + } } + core++; } } else if (!xmlStrcmp(CT, (const xmlChar *)"application/vnd.openxmlformats-officedocument.extended-properties+xml")) { - if (!extn) { - /* default: /docProps/app.xml */ - tmp = unzip_search_single(ctx, (const char *)(PN+1), xmlStrlen(PN)-1, &loff); - if (tmp == CL_ETIMEOUT) { - ret = tmp; - } - else if (tmp != CL_VIRUS) { - cli_dbgmsg("cli_process_ooxml: failed to find extended properties file \"%s\"!\n", PN); - mextn++; - } - else { - cli_dbgmsg("ooxml_content_cb: found extended properties file \"%s\" @ %x\n", PN, loff); - ret = unzip_single_internal(ctx, loff, ooxml_extn_cb); - extn++; + /* default: /docProps/app.xml */ + tmp = unzip_search_single(ctx, (const char *)(PN+1), xmlStrlen(PN)-1, &loff); + if (tmp == CL_ETIMEOUT) { + ret = tmp; + } + else if (tmp != CL_VIRUS) { + cli_dbgmsg("cli_process_ooxml: failed to find extended properties file \"%s\"!\n", PN); + mextn++; + } + else { + cli_dbgmsg("ooxml_content_cb: found extended properties file \"%s\" @ %x\n", PN, loff); + if (!extn) { + tmp = unzip_single_internal(ctx, loff, ooxml_extn_cb); + if (tmp == CL_ETIMEOUT || tmp == CL_EMEM) { + ret = tmp; + } } + extn++; } } else if (!xmlStrcmp(CT, (const xmlChar *)"application/vnd.openxmlformats-officedocument.custom-properties+xml")) { - if (!cust) { - /* default: /docProps/custom.xml */ - tmp = unzip_search_single(ctx, (const char *)(PN+1), xmlStrlen(PN)-1, &loff); - if (tmp == CL_ETIMEOUT) { - ret = tmp; - } - else if (tmp != CL_VIRUS) { - cli_dbgmsg("cli_process_ooxml: failed to find custom properties file \"%s\"!\n", PN); - mcust++; - } - else { - cli_dbgmsg("ooxml_content_cb: found custom properties file \"%s\" @ %x\n", PN, loff); - cust++; - //ret = unzip_single_internal(ctx, loff, ooxml_cust_cb); - } + /* default: /docProps/custom.xml */ + tmp = unzip_search_single(ctx, (const char *)(PN+1), xmlStrlen(PN)-1, &loff); + if (tmp == CL_ETIMEOUT) { + ret = tmp; + } + else if (tmp != CL_VIRUS) { + cli_dbgmsg("cli_process_ooxml: failed to find custom properties file \"%s\"!\n", PN); + mcust++; + } + else { + cli_dbgmsg("ooxml_content_cb: found custom properties file \"%s\" @ %x\n", PN, loff); + /* custom properties are not parsed */ + cust++; } } else if (!xmlStrcmp(CT, (const xmlChar *)"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml")) { dsig++; } - if (ret != CL_BREAK && ret != CL_SUCCESS) + if (ret != CL_SUCCESS) goto ooxml_content_exit; } ooxml_content_exit: - if (core) + if (core) { cli_jsonint(ctx->wrkproperty, "CorePropertiesFileCount", core); + if (core > 1) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_MULTIPLE_CORE_PROPFILES"); + } else if (!mcore) cli_dbgmsg("cli_process_ooxml: file does not contain core properties file\n"); - if (mcore) - cli_jsonint(ctx->wrkproperty, "CorePropertiesMissingFileCount", core); + if (mcore) { + cli_jsonint(ctx->wrkproperty, "CorePropertiesMissingFileCount", mcore); + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_MISSING_CORE_PROPFILES"); + } - if (extn) + if (extn) { cli_jsonint(ctx->wrkproperty, "ExtendedPropertiesFileCount", extn); + if (extn > 1) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_MULTIPLE_EXTN_PROPFILES"); + } else if (!mextn) cli_dbgmsg("cli_process_ooxml: file does not contain extended properties file\n"); - if (mextn) - cli_jsonint(ctx->wrkproperty, "ExtendedPropertiesMissingFileCount", extn); + if (mextn) { + cli_jsonint(ctx->wrkproperty, "ExtendedPropertiesMissingFileCount", mextn); + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_MISSING_EXTN_PROPFILES"); + } - if (cust) + if (cust) { cli_jsonint(ctx->wrkproperty, "CustomPropertiesFileCount", cust); + if (cust > 1) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_MULTIPLE_CUSTOM_PROPFILES"); + } else if (!mcust) cli_dbgmsg("cli_process_ooxml: file does not contain custom properties file\n"); - if (mcust) - cli_jsonint(ctx->wrkproperty, "CustomPropertiesMissingFileCount", cust); + if (mcust) { + cli_jsonint(ctx->wrkproperty, "CustomPropertiesMissingFileCount", mcust); + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_MISSING_CUST_PROPFILES"); + } if (dsig) { cli_jsonint(ctx->wrkproperty, "DigitalSignaturesCount", dsig); } + /* restore the engine tracking limits; resets session limit tracking */ + ctx->scansize = sav_scansize; + ctx->scannedfiles = sav_scannedfiles; + xmlTextReaderClose(reader); xmlFreeTextReader(reader); return ret; @@ -620,15 +702,27 @@ /* find "[Content Types].xml" */ tmp = unzip_search_single(ctx, "[Content_Types].xml", 18, &loff); if (tmp == CL_ETIMEOUT) { + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_TIMEOUT"); return CL_ETIMEOUT; } else if (tmp != CL_VIRUS) { cli_dbgmsg("cli_process_ooxml: failed to find ""[Content_Types].xml""!\n"); + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_NO_CONTENT_TYPES"); return CL_EFORMAT; } cli_dbgmsg("cli_process_ooxml: found ""[Content_Types].xml"" @ %x\n", loff); - return unzip_single_internal(ctx, loff, ooxml_content_cb); + tmp = unzip_single_internal(ctx, loff, ooxml_content_cb); + if (tmp == CL_ETIMEOUT) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_TIMEOUT"); + else if (tmp == CL_EMEM) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_OUTOFMEM"); + else if (tmp == CL_EMAXSIZE) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_EMAXSIZE"); + else if (tmp == CL_EMAXFILES) + ooxml_add_parse_error(ctx->wrkproperty, "OOXML_ERROR_EMAXFILES"); + + return tmp; #else UNUSEDPARAM(ctx); cli_dbgmsg("in cli_processooxml\n"); diff -Nru clamav-0.98.5+addedllvm/libclamav/pe.c clamav-0.98.6+dfsg/libclamav/pe.c --- clamav-0.98.5+addedllvm/libclamav/pe.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/pe.c 2014-12-18 21:42:47.000000000 +0000 @@ -2570,9 +2570,26 @@ cli_jsonstr(pe_json, "Packer", "yC"); #endif - cli_dbgmsg("%d,%d,%d,%d\n", nsections-1, e_lfanew, ecx, offset); - CLI_UNPTEMP("yC",(spinned,exe_sections,0)); - CLI_UNPRESULTS("yC",(yc_decrypt(spinned, fsize, exe_sections, nsections-1, e_lfanew, ndesc, ecx, offset)),0,(spinned,0)); + do { + unsigned int yc_unp_num_viruses = ctx->num_viruses; + const char *yc_unp_virname = NULL; + + if (ctx->virname) + yc_unp_virname = ctx->virname[0]; + + cli_dbgmsg("%d,%d,%d,%d\n", nsections-1, e_lfanew, ecx, offset); + CLI_UNPTEMP("yC",(spinned,exe_sections,0)); + CLI_UNPRESULTS("yC",(yc_decrypt(ctx, spinned, fsize, exe_sections, nsections-1, e_lfanew, ndesc, ecx, offset)),0,(spinned,0)); + + if (SCAN_ALL && yc_unp_num_viruses != ctx->num_viruses) { + free(exe_sections); + return CL_VIRUS; + } + else if (ctx->virname && yc_unp_virname != ctx->virname[0]) { + free(exe_sections); + return CL_VIRUS; + } + } while(0); } } diff -Nru clamav-0.98.5+addedllvm/libclamav/petite.c clamav-0.98.6+dfsg/libclamav/petite.c --- clamav-0.98.5+addedllvm/libclamav/petite.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/petite.c 2014-12-18 21:42:47.000000000 +0000 @@ -108,7 +108,8 @@ while (1) { char *ssrc, *ddst; uint32_t size, srva; - int backbytes, oldback, backsize, addsize; + int backbytes, oldback, addsize; + unsigned int backsize; if ( ! CLI_ISCONTAINED(buf, bufsz, packed, 4)) { if (usects) diff -Nru clamav-0.98.5+addedllvm/libclamav/rebuildpe.c clamav-0.98.6+dfsg/libclamav/rebuildpe.c --- clamav-0.98.5+addedllvm/libclamav/rebuildpe.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/rebuildpe.c 2014-12-18 21:42:47.000000000 +0000 @@ -121,6 +121,11 @@ int cli_rebuildpe(char *buffer, struct cli_exe_section *sections, int sects, uint32_t base, uint32_t ep, uint32_t ResRva, uint32_t ResSize, int file) { + return cli_rebuildpe_align(buffer, sections, sects, base, ep, ResRva, ResSize, file, 0); +} + +int cli_rebuildpe_align(char *buffer, struct cli_exe_section *sections, int sects, uint32_t base, uint32_t ep, uint32_t ResRva, uint32_t ResSize, int file, uint32_t align) +{ uint32_t datasize=0, rawbase=PESALIGN(0x148+0x80+0x28*sects, 0x200); char *pefile=NULL, *curpe; struct IMAGE_PE_HEADER *fakepe; @@ -131,8 +136,12 @@ if(sects+gotghost > 96) return 0; - for (i=0; i < sects; i++) - datasize+=PESALIGN(sections[i].rsz, 0x200); + if (!align) + for (i=0; i < sects; i++) + datasize+=PESALIGN(sections[i].rsz, 0x200); + else + for (i=0; i < sects; i++) + datasize+=PESALIGN(PESALIGN(sections[i].rsz, align), 0x200); if(datasize > CLI_MAX_ALLOCATION) return 0; @@ -163,10 +172,17 @@ for (i=0; i < sects; i++) { snprintf(curpe, 8, ".clam%.2d", i+1); - cli_writeint32(curpe+8, sections[i].vsz); - cli_writeint32(curpe+12, sections[i].rva); - cli_writeint32(curpe+16, sections[i].rsz); - cli_writeint32(curpe+20, rawbase); + if (!align) { + cli_writeint32(curpe+8, sections[i].vsz); + cli_writeint32(curpe+12, sections[i].rva); + cli_writeint32(curpe+16, sections[i].rsz); + cli_writeint32(curpe+20, rawbase); + } else { + cli_writeint32(curpe+8, PESALIGN(sections[i].vsz, align)); + cli_writeint32(curpe+12, PESALIGN(sections[i].rva, align)); + cli_writeint32(curpe+16, PESALIGN(sections[i].rsz, align)); + cli_writeint32(curpe+20, rawbase); + } /* already zeroed cli_writeint32(curpe+24, 0); cli_writeint32(curpe+28, 0); @@ -174,9 +190,14 @@ */ cli_writeint32(curpe+0x24, 0xffffffff); memcpy(pefile+rawbase, buffer+sections[i].raw, sections[i].rsz); - rawbase+=PESALIGN(sections[i].rsz, 0x200); curpe+=40; - datasize+=PESALIGN(sections[i].vsz, 0x1000); + if (!align) { + rawbase+=PESALIGN(sections[i].rsz, 0x200); + datasize+=PESALIGN(sections[i].vsz, 0x1000); + } else { + rawbase+=PESALIGN(PESALIGN(sections[i].rsz, align), 0x200); + datasize+=PESALIGN(PESALIGN(sections[i].vsz, align), 0x1000); + } } fakepe->SizeOfImage = EC32(datasize); } else { diff -Nru clamav-0.98.5+addedllvm/libclamav/rebuildpe.h clamav-0.98.6+dfsg/libclamav/rebuildpe.h --- clamav-0.98.5+addedllvm/libclamav/rebuildpe.h 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/rebuildpe.h 2014-12-18 21:42:47.000000000 +0000 @@ -25,5 +25,6 @@ #include "execs.h" int cli_rebuildpe(char *, struct cli_exe_section *, int, uint32_t, uint32_t, uint32_t, uint32_t, int); +int cli_rebuildpe_align(char *, struct cli_exe_section *, int, uint32_t, uint32_t, uint32_t, uint32_t, int, uint32_t); #endif diff -Nru clamav-0.98.5+addedllvm/libclamav/scanners.c clamav-0.98.6+dfsg/libclamav/scanners.c --- clamav-0.98.5+addedllvm/libclamav/scanners.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/scanners.c 2014-12-18 21:42:47.000000000 +0000 @@ -2514,7 +2514,9 @@ cli_dbgmsg("cli_magic_scandesc: file whitelisted by callback\n"); perf_stop(ctx, PERFT_PRECB); ctx->hook_lsig_matches = old_hook_lsig_matches; + /* returns CL_CLEAN */ *run_cleanup = 1; + break; case CL_VIRUS: cli_dbgmsg("cli_magic_scandesc: file blacklisted by callback\n"); cli_append_virus(ctx, "Detected.By.Callback"); @@ -2522,6 +2524,7 @@ ctx->hook_lsig_matches = old_hook_lsig_matches; *run_cleanup = 1; res = CL_VIRUS; + break; case CL_CLEAN: break; default: @@ -2779,11 +2782,13 @@ #if HAVE_JSON if ((ctx->options & CL_SCAN_FILE_PROPERTIES) && (ctx->wrkproperty != NULL)) { ret = cli_process_ooxml(ctx); - if (ret == CL_ETIMEOUT) { - return magic_scandesc_cleanup(ctx, type, hash, hashed_size, cache_clean, ret, parent_property); + if (ret == CL_EMEM || ret == CL_ENULLARG) { + /* critical error */ + break; } else if (ret != CL_SUCCESS) { - /* JSONOOXML - what to do if something else fails? placeholder */ + /* allow for the CL_TYPE_ZIP scan to occur; cli_process_ooxml other possible returns: */ + /* CL_ETIMEOUT, CL_EMAXSIZE, CL_EMAXFILES, CL_EPARSE, CL_EFORMAT, CL_BREAK, CL_ESTAT */ ret = CL_SUCCESS; } } diff -Nru clamav-0.98.5+addedllvm/libclamav/tnef.c clamav-0.98.6+dfsg/libclamav/tnef.c --- clamav-0.98.5+addedllvm/libclamav/tnef.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/tnef.c 2014-12-18 21:42:47.000000000 +0000 @@ -166,7 +166,7 @@ if(fout >= 0) { int count; - cli_warnmsg("Saving dump to %s: refer to http://www.clamav.net/documentation.html\n", filename); + cli_warnmsg("Saving dump to %s: refer to http://www.clamav.net/doc/install.html\n", filename); pos = 0; while ((count = fmap_readn(*ctx->fmap, buffer, pos, sizeof(buffer))) > 0) { diff -Nru clamav-0.98.5+addedllvm/libclamav/unzip.c clamav-0.98.6+dfsg/libclamav/unzip.c --- clamav-0.98.5+addedllvm/libclamav/unzip.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/unzip.c 2014-12-18 21:42:47.000000000 +0000 @@ -541,7 +541,7 @@ } #if HAVE_JSON if (cli_json_timeout_cycle_check(ctx, &toval) != CL_SUCCESS) { - return CL_ETIMEOUT; + ret=CL_ETIMEOUT; } #endif @@ -562,7 +562,7 @@ } #if HAVE_JSON if (cli_json_timeout_cycle_check(ctx, &toval) != CL_SUCCESS) { - return CL_ETIMEOUT; + ret=CL_ETIMEOUT; } #endif @@ -668,7 +668,7 @@ cli_dbgmsg("unzip_search: central @%x\n", coff); while(ret==CL_CLEAN && (coff=chdr(zmap, coff, fsize, NULL, fc+1, &ret, ctx, NULL, requests))) { if (requests->match) { - return CL_VIRUS; + ret=CL_VIRUS; } fc++; @@ -678,7 +678,7 @@ } #if HAVE_JSON if (ctx && cli_json_timeout_cycle_check(ctx, (int *)(&toval)) != CL_SUCCESS) { - return CL_ETIMEOUT; + ret=CL_ETIMEOUT; } #endif } diff -Nru clamav-0.98.5+addedllvm/libclamav/upack.c clamav-0.98.6+dfsg/libclamav/upack.c --- clamav-0.98.5+addedllvm/libclamav/upack.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/upack.c 2014-12-18 21:42:47.000000000 +0000 @@ -213,12 +213,17 @@ loc_edi = dest+vma-base; /* XXX not enough samples provided to be sure of it! */ pushed_esi = loc_edi; - end_edi = dest + cli_readint32(loc_esi + 0x34) - vma; if (upack_version == UPACK_0297729) { end_edi = dest + cli_readint32(loc_esi + 0x64) - vma; save3 = cli_readint32(loc_esi + 0x40); - } + } else { + end_edi = dest + cli_readint32(loc_esi + 0x34) - vma; + } + if (loc_edi > end_edi) { + cli_dbgmsg("Upack: loc_edi > end_edi breaks cli_rebuildpe() bb#11216\n"); + return -1; + } /* begin end */ cli_dbgmsg("Upack: data initialized, before upack lzma call!\n"); if ((ret = (uint32_t)unupack399(dest, dsize, 0, loc_ebx, 0, loc_edi, end_edi, shlsize, paddr)) == 0xffffffff) @@ -376,6 +381,10 @@ end_edi = dest + cli_readint32(loc_esi-0x28) - base; /* read checked above */ loc_esi = save_edi; } + if (loc_edi > end_edi) { + cli_dbgmsg("Upack(alt begin): loc_edi > end_edi breaks cli_rebuildpe() bb#11216\n"); + return -1; + } cli_dbgmsg("Upack: data initialized, before upack lzma call!\n"); if ((ret = (uint32_t)unupack399(dest, dsize, loc_ecx, loc_ebx, loc_ecx, loc_edi, end_edi, shlsize, paddr)) == 0xffffffff) return -1; diff -Nru clamav-0.98.5+addedllvm/libclamav/upx.c clamav-0.98.6+dfsg/libclamav/upx.c --- clamav-0.98.5+addedllvm/libclamav/upx.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/upx.c 2014-12-18 21:42:47.000000000 +0000 @@ -222,6 +222,10 @@ cli_writeint32(sections+12, urva); cli_writeint32(sections+16, vsize); cli_writeint32(sections+20, foffset); + if (foffset + vsize < foffset) { + /* Integer overflow */ + return 0; + } foffset+=vsize; sections+=0x28; @@ -239,7 +243,20 @@ memcpy(newbuf+0xd0, pehdr,0xf8+0x28*sectcnt); sections = pehdr+0xf8; for (upd = 0; upd foffset || offset2 > foffset || offset1 + offset2 > foffset) { + free(newbuf); + return 1; + } + + offset3 = (uint32_t)cli_readint32(sections+12); + if (offset3-upx0 > *dsize) { + free(newbuf); + return 1; + } + memcpy(newbuf+offset1, dst+offset3-upx0, offset2); sections+=0x28; } diff -Nru clamav-0.98.5+addedllvm/libclamav/version.h clamav-0.98.6+dfsg/libclamav/version.h --- clamav-0.98.5+addedllvm/libclamav/version.h 2014-11-13 23:14:39.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/version.h 2014-12-18 21:45:17.000000000 +0000 @@ -1 +1 @@ -#define REPO_VERSION "devel-clamav-0.98.5" +#define REPO_VERSION "devel-clamav-0.98.6" diff -Nru clamav-0.98.5+addedllvm/libclamav/yc.c clamav-0.98.6+dfsg/libclamav/yc.c --- clamav-0.98.5+addedllvm/libclamav/yc.c 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/yc.c 2014-12-18 21:42:47.000000000 +0000 @@ -39,10 +39,26 @@ #define EC16(x) le16_to_host(x) /* Convert little endian to host */ +#define DO_HEURISTIC 1 + +static int yc_bounds_check(cli_ctx *ctx, char *base, unsigned int filesize, char *offset, unsigned int bound) +{ + if ((unsigned int)((offset+bound)-base) > filesize) { + cli_dbgmsg("yC: Bounds check assertion.\n"); +#if DO_HEURISTIC + cli_append_virus(ctx, "Heuristics.BoundsCheck"); +#endif + return 1; + } + + return 0; +} + + /* ========================================================================== */ /* "Emulates" the poly decryptors */ -static int yc_poly_emulator(char* decryptor_offset, char* code, unsigned int ecx, uint32_t max_emu) +static int yc_poly_emulator(cli_ctx *ctx, char *base, unsigned int filesize, char* decryptor_offset, char* code, unsigned int ecx, uint32_t max_emu) { /* @@ -68,15 +84,25 @@ for(i=0;iSizeOfOptionalHeader) + 0x18; uint32_t max_emu; + unsigned int ofilesize = filesize; /* First layer (decryptor of the section decryptor) in last section @@ -182,8 +235,12 @@ */ cli_dbgmsg("yC: offset: %x, length: %x\n", offset, ecx); cli_dbgmsg("yC: decrypting decryptor on sect %d\n", sectcount); - if (yc_poly_emulator(fbuf + ycsect + 0x93, fbuf + ycsect + 0xc6, ecx, ecx)) - return 1; + switch (yc_poly_emulator(ctx, fbuf, filesize, fbuf + ycsect + 0x93, fbuf + ycsect + 0xc6, ecx, ecx)) { + case 2: + return CL_VIRUS; + case 1: + return CL_EUNPACK; + } filesize-=sections[sectcount].ursz; /* @@ -218,11 +275,15 @@ cli_dbgmsg("yC: bad emulation length limit %u\n", max_emu); return 1; } - if (yc_poly_emulator(fbuf + ycsect + (offset == -0x18 ? 0x3ea : 0x457), + switch (yc_poly_emulator(ctx, fbuf, ofilesize, fbuf + ycsect + (offset == -0x18 ? 0x3ea : 0x457), fbuf + sections[i].raw, sections[i].ursz, - max_emu)) - return 1; + max_emu)) { + case 2: + return CL_VIRUS; + case 1: + return CL_EUNPACK; + } } /* Remove yC section */ @@ -240,7 +301,7 @@ if (cli_writen(desc, fbuf, filesize)==-1) { cli_dbgmsg("yC: Cannot write unpacked file\n"); - return 1; + return CL_EUNPACK; } - return 0; + return CL_SUCCESS; } diff -Nru clamav-0.98.5+addedllvm/libclamav/yc.h clamav-0.98.6+dfsg/libclamav/yc.h --- clamav-0.98.5+addedllvm/libclamav/yc.h 2014-11-13 22:30:43.000000000 +0000 +++ clamav-0.98.6+dfsg/libclamav/yc.h 2014-12-18 21:42:47.000000000 +0000 @@ -25,6 +25,6 @@ #include "execs.h" #include "cltypes.h" -int yc_decrypt(char *, unsigned int, struct cli_exe_section *, unsigned int, uint32_t, int,uint32_t,int16_t); +int yc_decrypt(cli_ctx *, char *, unsigned int, struct cli_exe_section *, unsigned int, uint32_t, int,uint32_t,int16_t); #endif diff -Nru clamav-0.98.5+addedllvm/m4/reorganization/version.m4 clamav-0.98.6+dfsg/m4/reorganization/version.m4 --- clamav-0.98.5+addedllvm/m4/reorganization/version.m4 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/m4/reorganization/version.m4 2014-12-18 21:43:18.000000000 +0000 @@ -1,9 +1,9 @@ dnl change this on a release dnl VERSION="devel-`date +%Y%m%d`" -VERSION="0.98.5" +VERSION="0.98.6" LC_CURRENT=7 -LC_REVISION=22 +LC_REVISION=25 LC_AGE=1 LIBCLAMAV_VERSION="$LC_CURRENT":"$LC_REVISION":"$LC_AGE" AC_SUBST([LIBCLAMAV_VERSION]) diff -Nru clamav-0.98.5+addedllvm/NEWS clamav-0.98.6+dfsg/NEWS --- clamav-0.98.5+addedllvm/NEWS 2014-11-13 22:30:35.000000000 +0000 +++ clamav-0.98.6+dfsg/NEWS 2014-12-18 21:42:47.000000000 +0000 @@ -1,49 +1,36 @@ -0.98.5 +0.98.6 ------ -Welcome to ClamAV 0.98.5! ClamAV 0.98.5 includes important new features -for collecting and analyzing file properties. Software developers and -analysts may collect file property meta data using the ClamAV API for -subsequent analysis by ClamAV bytecode programs. Using these features -will require that libjson-c is installed, but otherwise libjson-c is not -needed. - -Look for our upcoming series of blog posts to learn more about using the -ClamAV API and bytecode facilities for collecting and analyzing file -properties. - -ClamAV 0.98.5 also includes these new features and bug fixes: - - - Support for the XDP file format and extracting, decoding, and - scanning PDF files within XDP files. - - Addition of shared library support for LLVM versions 3.1 - 3.5 - for the purpose of just-in-time(JIT) compilation of ClamAV - bytecode signatures. Andreas Cadhalpun submitted the patch - implementing this support. - - Enhancements to the clambc command line utility to assist - ClamAV bytecode signature authors by providing introspection - into compiled bytecode programs. - - Resolution of many of the warning messages from ClamAV compilation. - - Improved detection of malicious PE files. - - Security fix for ClamAV crash when using 'clamscan -a'. This issue - was identified by Kurt Siefried of Red Hat. - - Security fix for ClamAV crash when scanning maliciously crafted - yoda's crypter files. This issue, as well as several other bugs - fixed in this release, were identified by Damien Millescamp of - Oppida. - - ClamAV 0.98.5 now works with OpenSSL in FIPS compliant mode. - Thanks to Reinhard Max for supplying the patch. - - Bug fixes and other feature enhancements. See Changelog or - git log for details. +ClamAV 0.98.6 is a bug fix release correcting the following: + - library shared object revisions. + - installation issues on some Mac OS X and FreeBSD platforms. + - includes a patch from Sebastian Andrzej Siewior making + ClamAV pid files compatible with systemd. + - Fix a heap out of bounds condition with crafted Yoda's + crypter files. This issue was discovered by Felix Groebert + of the Google Security Team. + - Fix a heap out of bounds condition with crafted mew packer + files. This issue was discovered by Felix Groebert of the + Google Security Team. + - Fix a heap out of bounds condition with crafted upx packer + files. This issue was discovered by Kevin Szkudlapski of + Quarkslab. + - Fix a heap out of bounds condition with crafted upack packer + files. This issue was discovered by Sebastian Andrzej Siewior. + CVE-2014-9328. + - Compensate a crash due to incorrect compiler optimization when + handling crafted petite packer files. This issue was discovered + by Sebastian Andrzej Siewior. + Thanks to the following ClamAV community members for code submissions -and bug reporting included in ClamAV 0.98.5: +and bug reporting included in ClamAV 0.98.6: -Andreas Cadhalpun Sebastian Andrzej Siewior -Damien Millescamp -Reinhard Max -Kurt Seifried +Felix Groebert +Kevin Szkudlapski +Mark Pizzolato +Daniel J. Luke -- The ClamAV team (http://www.clamav.net/about.html#credits) diff -Nru clamav-0.98.5+addedllvm/README clamav-0.98.6+dfsg/README --- clamav-0.98.5+addedllvm/README 2014-11-13 22:30:35.000000000 +0000 +++ clamav-0.98.6+dfsg/README 2014-12-18 21:42:47.000000000 +0000 @@ -2,6 +2,40 @@ here may not be available in binary packages. -- +0.98.6 +------ + +ClamAV 0.98.6 is a bug fix release correcting the following: + + - library shared object revisions. + - installation issues on some Mac OS X and FreeBSD platforms. + - includes a patch from Sebastian Andrzej Siewior making + ClamAV pid files compatible with systemd. + - Fix a heap out of bounds condition with crafted Yoda's + crypter files. This issue was discovered by Felix Groebert + of the Google Security Team. + - Fix a heap out of bounds condition with crafted mew packer + files. This issue was discovered by Felix Groebert of the + Google Security Team. + - Fix a heap out of bounds condition with crafted upx packer + files. This issue was discovered by Kevin Szkudlapski of + Quarkslab. + - Fix a heap out of bounds condition with crafted upack packer + files. This issue was discovered by Sebastian Andrzej Siewior. + CVE-2014-9328. + - Compensate a crash due to incorrect compiler optimization when + handling crafted petite packer files. This issue was discovered + by Sebastian Andrzej Siewior. + +Thanks to the following ClamAV community members for code submissions +and bug reporting included in ClamAV 0.98.6: + +Sebastian Andrzej Siewior +Felix Groebert +Kevin Szkudlapski +Mark Pizzolato +Daniel J. Luke + 0.98.5 ------ diff -Nru clamav-0.98.5+addedllvm/shared/optparser.c clamav-0.98.6+dfsg/shared/optparser.c --- clamav-0.98.5+addedllvm/shared/optparser.c 2014-11-13 22:30:44.000000000 +0000 +++ clamav-0.98.6+dfsg/shared/optparser.c 2014-12-18 21:42:47.000000000 +0000 @@ -295,13 +295,13 @@ "Allow loading bytecode from outside digitally signed .c[lv]d files.","no"}, { "BytecodeMode", "bytecode-mode", 0, CLOPT_TYPE_STRING, "^(Auto|ForceJIT|ForceInterpreter|Test)$", -1, "Auto", FLAG_REQUIRED, OPT_CLAMD | OPT_CLAMSCAN, - "Set bytecode execution mode.\nPossible values:\n\tAuto - automatically choose JIT if possible, fallback to interpreter\nForceJIT - always choose JIT, fail if not possible\nForceIntepreter - always choose interpreter\nTest - run with both JIT and interpreter and compare results. Make all failures fatal.","Auto"}, + "Set bytecode execution mode.\nPossible values:\n\tAuto - automatically choose JIT if possible, fallback to interpreter\nForceJIT - always choose JIT, fail if not possible\nForceInterpreter - always choose interpreter\nTest - run with both JIT and interpreter and compare results. Make all failures fatal.","Auto"}, { "BytecodeStatistics", "bytecode-statistics", 0, CLOPT_TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_CLAMSCAN | OPT_CLAMBC, "Collect and print bytecode execution statistics.", "no" }, { "DetectPUA", "detect-pua", 0, CLOPT_TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_CLAMD | OPT_CLAMSCAN, "Detect Potentially Unwanted Applications.", "yes" }, - { "ExcludePUA", "exclude-pua", 0, CLOPT_TYPE_STRING, NULL, -1, NULL, FLAG_MULTIPLE, OPT_CLAMD | OPT_CLAMSCAN, "Exclude a specific PUA category. This directive can be used multiple times.\nSee http://www.clamav.net/documentation.html#pua for the complete list of PUA\ncategories.", "NetTool\nPWTool" }, + { "ExcludePUA", "exclude-pua", 0, CLOPT_TYPE_STRING, NULL, -1, NULL, FLAG_MULTIPLE, OPT_CLAMD | OPT_CLAMSCAN, "Exclude a specific PUA category. This directive can be used multiple times.\nSee http://www.clamav.net/doc/pua.html for the complete list of PUA\ncategories.", "NetTool\nPWTool" }, { "IncludePUA", "include-pua", 0, CLOPT_TYPE_STRING, NULL, -1, NULL, FLAG_MULTIPLE, OPT_CLAMD | OPT_CLAMSCAN, "Only include a specific PUA category. This directive can be used multiple\ntimes.", "Spy\nScanner\nRAT" }, @@ -458,9 +458,9 @@ { "DetectionStatsCountry", NULL, 0, CLOPT_TYPE_STRING, NULL, -1, NULL, 0, OPT_FRESHCLAM, "Country of origin of malware/detection statistics (for statistical\npurposes only). The statistics collector at ClamAV.net will look up\nyour IP address to determine the geographical origin of the malware\nreported by your installation. If this installation is mainly used to\nscan data which comes from a different location, please enable this\noption and enter a two-letter code (see http://www.iana.org/domains/root/db/)\nof the country of origin.", "country-code" }, - { "DetectionStatsHostID", NULL, 0, CLOPT_TYPE_STRING, NULL, -1, NULL, 0, OPT_FRESHCLAM, "This option enables support for our \"Personal Statistics\" service.\nWhen this option is enabled, the information on malware detected by\nyour clamd installation is made available to you through our website.\nTo get your HostID, log on http://www.stats.clamav.net and add a new\nhost to your host list. Once you have the HostID, uncomment this option\nand paste the HostID here. As soon as your freshclam starts submitting\ninformation to our stats collecting service, you will be able to view\nthe statistics of this clamd installation by logging into\nhttp://www.stats.clamav.net with the same credentials you used to\ngenerate the HostID. For more information refer to:\nhttp://www.clamav.net/documentation.html#cctts\nThis feature requires SubmitDetectionStats to be enabled.", "unique-id" }, + { "DetectionStatsHostID", NULL, 0, CLOPT_TYPE_STRING, NULL, -1, NULL, 0, OPT_FRESHCLAM, "This option enables support for our \"Personal Statistics\" service.\nWhen this option is enabled, the information on malware detected by\nyour clamd installation is made available to you through our website.\nTo get your HostID, log on http://www.stats.clamav.net and add a new\nhost to your host list. Once you have the HostID, uncomment this option\nand paste the HostID here. As soon as your freshclam starts submitting\ninformation to our stats collecting service, you will be able to view\nthe statistics of this clamd installation by logging into\nhttp://www.stats.clamav.net with the same credentials you used to\ngenerate the HostID. For more information refer to:\nhttp://www.clamav.net/doc/cctts.html\nThis feature requires SubmitDetectionStats to be enabled.", "unique-id" }, - { "SafeBrowsing", NULL, 0, CLOPT_TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_FRESHCLAM, "This option enables support for Google Safe Browsing. When activated for\nthe first time, freshclam will download a new database file (safebrowsing.cvd)\nwhich will be automatically loaded by clamd and clamscan during the next\nreload, provided that the heuristic phishing detection is turned on. This\ndatabase includes information about websites that may be phishing sites or\npossible sources of malware. When using this option, it's mandatory to run\nfreshclam at least every 30 minutes.\nFreshclam uses the ClamAV's mirror infrastructure to distribute the\ndatabase and its updates but all the contents are provided under Google's\nterms of use. See http://www.google.com/transparencyreport/safebrowsing\nand http://www.clamav.net/documentation.html for more information.", "yes" }, + { "SafeBrowsing", NULL, 0, CLOPT_TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_FRESHCLAM, "This option enables support for Google Safe Browsing. When activated for\nthe first time, freshclam will download a new database file (safebrowsing.cvd)\nwhich will be automatically loaded by clamd and clamscan during the next\nreload, provided that the heuristic phishing detection is turned on. This\ndatabase includes information about websites that may be phishing sites or\npossible sources of malware. When using this option, it's mandatory to run\nfreshclam at least every 30 minutes.\nFreshclam uses the ClamAV's mirror infrastructure to distribute the\ndatabase and its updates but all the contents are provided under Google's\nterms of use. See http://www.google.com/transparencyreport/safebrowsing\nand http://www.clamav.net/doc/safebrowsing.html for more information.", "yes" }, { "Bytecode", NULL, 0, CLOPT_TYPE_BOOL, MATCH_BOOL, 1, NULL, 0, OPT_FRESHCLAM, "This option enables downloading of bytecode.cvd, which includes additional\ndetection mechanisms and improvements to the ClamAV engine.", "yes" }, diff -Nru clamav-0.98.5+addedllvm/sigtool/Makefile.am clamav-0.98.6+dfsg/sigtool/Makefile.am --- clamav-0.98.5+addedllvm/sigtool/Makefile.am 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/sigtool/Makefile.am 2014-12-18 21:43:18.000000000 +0000 @@ -37,6 +37,6 @@ AM_CFLAGS=@WERR_CFLAGS@ DEFS = @DEFS@ -DCL_NOTHREADS -AM_CPPFLAGS = @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SIGTOOL_CPPFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ @SIGTOOL_CPPFLAGS@ LIBS = @SSL_LDFLAGS@ @SSL_LIBS@ $(top_builddir)/libclamav/libclamav.la @FRESHCLAM_LIBS@ @THREAD_LIBS@ CLEANFILES=*.gcda *.gcno diff -Nru clamav-0.98.5+addedllvm/sigtool/Makefile.in clamav-0.98.6+dfsg/sigtool/Makefile.in --- clamav-0.98.5+addedllvm/sigtool/Makefile.in 2014-11-13 22:31:31.000000000 +0000 +++ clamav-0.98.6+dfsg/sigtool/Makefile.in 2014-12-18 21:43:18.000000000 +0000 @@ -456,7 +456,7 @@ sigtool.c AM_CFLAGS = @WERR_CFLAGS@ -AM_CPPFLAGS = @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SIGTOOL_CPPFLAGS@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ @SIGTOOL_CPPFLAGS@ CLEANFILES = *.gcda *.gcno all: all-am diff -Nru clamav-0.98.5+addedllvm/unit_tests/valgrind.supp clamav-0.98.6+dfsg/unit_tests/valgrind.supp --- clamav-0.98.5+addedllvm/unit_tests/valgrind.supp 2014-11-13 22:30:45.000000000 +0000 +++ clamav-0.98.6+dfsg/unit_tests/valgrind.supp 2014-12-18 21:42:47.000000000 +0000 @@ -86,3 +86,16 @@ ... fun:SSL_library_init } +{ + y0da-cached-virname + Memcheck:Cond + fun:cli_scanpe + fun:magic_scandesc + fun:cli_base_scandesc + fun:cli_magic_scandesc + fun:scan_common + fun:cl_scandesc_callback + fun:scanfile + fun:scanmanager + fun:main +}