diff --git a/clamav-devel/ChangeLog b/clamav-devel/ChangeLog index c8ceb03c1..1f1af0ccf 100644 --- a/clamav-devel/ChangeLog +++ b/clamav-devel/ChangeLog @@ -1,3 +1,8 @@ +Tue Feb 7 11:34:17 GMT 2006 (njh) +---------------------------------- + * libclamav/message.c: Some Trojan.Downloader.Small-1011 were not + being spotted - reported by Diego + Sun Feb 5 13:56:56 GMT 2006 (njh) ---------------------------------- * clamav-milter: Added --template-headers option, based on a whishlist diff --git a/clamav-devel/libclamav/message.c b/clamav-devel/libclamav/message.c index 1b295e690..a96d88db2 100644 --- a/clamav-devel/libclamav/message.c +++ b/clamav-devel/libclamav/message.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2002 Nigel Horne + * Copyright (C) 2002-2006 Nigel Horne * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -static char const rcsid[] = "$Id: message.c,v 1.160 2005/12/10 18:56:35 nigelhorne Exp $"; +static char const rcsid[] = "$Id: message.c,v 1.161 2006/02/07 11:35:45 nigelhorne Exp $"; #if HAVE_CONFIG_H #include "clamav-config.h" @@ -78,6 +78,9 @@ static unsigned char hex(char c); static unsigned char base64(char c); static unsigned char uudecode(char c); static const char *messageGetArgument(const message *m, int arg); +/* + * http://oopweb.com/CPP/Documents/FunctionPointers/Volume/CCPP/callback/callback.html + */ static void *messageExport(message *m, const char *dir, void *(*create)(void), void (*destroy)(void *), void (*setFilename)(void *, const char *, const char *), void (*addData)(void *, const unsigned char *, size_t), void *(*exportText)(const text *, void *)); static int usefulArg(const char *arg); static void messageDedup(message *m); @@ -2054,7 +2057,8 @@ decode(message *m, const char *in, unsigned char *out, unsigned char (*decoder)( case 4: *out++ = (b1 << 2) | ((b2 >> 4) & 0x3); *out++ = (b2 << 4) | ((b3 >> 2) & 0xF); - *out++ = (b3 << 6) | (b4 & 0x3F); + if((nbytes == 4) || b3) + *out++ = (b3 << 6) | (b4 & 0x3F); break; case 2: *out++ = (b1 << 2) | ((b2 >> 4) & 0x3);