ClamAV is an open source (GPLv2) anti-virus toolkit.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
clamav/clamav-devel/contrib/Windows/Projects/clamAV/patches

2994 lines
73 KiB

*** /home/njh/src/clamav-devel/./libclamav/htmlnorm.c 2006-10-09 17:00:07.000000000 +0100
--- ./libclamav/htmlnorm.c 2006-10-09 17:32:30.000000000 +0100
***************
*** 495,501 ****
if (fd_tmp < 0) {
return FALSE;
}
! stream_in = fdopen(fd_tmp, "r");
if (!stream_in) {
close(fd_tmp);
return FALSE;
--- 495,501 ----
if (fd_tmp < 0) {
return FALSE;
}
! stream_in = fdopen(fd_tmp, "rb");
if (!stream_in) {
close(fd_tmp);
return FALSE;
***************
*** 537,543 ****
}
snprintf(filename, 1024, "%s/comment.html", dirname);
! file_buff_o1->fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, S_IWUSR|S_IRUSR);
if (!file_buff_o1->fd) {
cli_dbgmsg("open failed: %s\n", filename);
free(file_buff_o1);
--- 537,543 ----
}
snprintf(filename, 1024, "%s/comment.html", dirname);
! file_buff_o1->fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, S_IWUSR|S_IRUSR);
if (!file_buff_o1->fd) {
cli_dbgmsg("open failed: %s\n", filename);
free(file_buff_o1);
***************
*** 548,554 ****
}
snprintf(filename, 1024, "%s/nocomment.html", dirname);
! file_buff_o2->fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, S_IWUSR|S_IRUSR);
if (!file_buff_o2->fd) {
cli_dbgmsg("open failed: %s\n", filename);
close(file_buff_o1->fd);
--- 548,554 ----
}
snprintf(filename, 1024, "%s/nocomment.html", dirname);
! file_buff_o2->fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, S_IWUSR|S_IRUSR);
if (!file_buff_o2->fd) {
cli_dbgmsg("open failed: %s\n", filename);
close(file_buff_o1->fd);
***************
*** 560,566 ****
}
snprintf(filename, 1024, "%s/script.html", dirname);
! file_buff_script->fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, S_IWUSR|S_IRUSR);
if (!file_buff_script->fd) {
cli_dbgmsg("open failed: %s\n", filename);
close(file_buff_o1->fd);
--- 560,566 ----
}
snprintf(filename, 1024, "%s/script.html", dirname);
! file_buff_script->fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, S_IWUSR|S_IRUSR);
if (!file_buff_script->fd) {
cli_dbgmsg("open failed: %s\n", filename);
close(file_buff_o1->fd);
***************
*** 1273,1279 ****
snprintf(filename, 1024, "%s/rfc2397", dirname);
tmp_file = cli_gentemp(filename);
cli_dbgmsg("RFC2397 data file: %s\n", tmp_file);
! file_tmp_o1->fd = open(tmp_file, O_WRONLY|O_CREAT|O_TRUNC, S_IWUSR|S_IRUSR);
free(tmp_file);
if (!file_tmp_o1->fd) {
cli_dbgmsg("open failed: %s\n", filename);
--- 1273,1279 ----
snprintf(filename, 1024, "%s/rfc2397", dirname);
tmp_file = cli_gentemp(filename);
cli_dbgmsg("RFC2397 data file: %s\n", tmp_file);
! file_tmp_o1->fd = open(tmp_file, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, S_IWUSR|S_IRUSR);
free(tmp_file);
if (!file_tmp_o1->fd) {
cli_dbgmsg("open failed: %s\n", filename);
***************
*** 1475,1488 ****
if (fd_tmp < 0) {
return FALSE;
}
! stream_in = fdopen(fd_tmp, "r");
if (!stream_in) {
close(fd_tmp);
return FALSE;
}
snprintf(filename, 1024, "%s/screnc.html", dirname);
! file_buff.fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, S_IWUSR|S_IRUSR);
file_buff.length = 0;
if (!file_buff.fd) {
--- 1475,1488 ----
if (fd_tmp < 0) {
return FALSE;
}
! stream_in = fdopen(fd_tmp, "rb");
if (!stream_in) {
close(fd_tmp);
return FALSE;
}
snprintf(filename, 1024, "%s/screnc.html", dirname);
! file_buff.fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, S_IWUSR|S_IRUSR);
file_buff.length = 0;
if (!file_buff.fd) {
*** /home/njh/src/clamav-devel/./libclamav/readdb.c 2006-10-09 17:00:07.000000000 +0100
--- ./libclamav/readdb.c 2006-10-09 20:28:22.000000000 +0100
***************
*** 1284,1290 ****
struct stat sb;
int ret;
-
if(stat(path, &sb) == -1) {
cli_errmsg("cl_loaddbdir(): Can't get status of %s\n", path);
return CL_EIO;
--- 1284,1289 ----
*** /home/njh/src/clamav-devel/./libclamav/blob.c 2006-10-08 13:22:52.000000000 +0100
--- ./libclamav/blob.c 2006-09-27 11:30:16.000000000 +0100
***************
*** 16,22 ****
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
! static char const rcsid[] = "$Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#if HAVE_CONFIG_H
#include "clamav-config.h"
--- 16,22 ----
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
! static char const rcsid[] = "$Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#if HAVE_CONFIG_H
#include "clamav-config.h"
***************
*** 440,446 ****
cli_dbgmsg("fileblobSetFilename: _mktemp_s(%s)\n", fullname);
if(_mktemp_s(fullname, strlen(fullname) + 1) != 0) {
char *name;
!
/* _mktemp_s only allows 26 files */
cli_dbgmsg("fileblobSetFilename: _mktemp_s(%s) failed: %s\n", fullname, strerror(errno));
name = cli_gentemp(dir);
--- 440,446 ----
cli_dbgmsg("fileblobSetFilename: _mktemp_s(%s)\n", fullname);
if(_mktemp_s(fullname, strlen(fullname) + 1) != 0) {
char *name;
!
/* _mktemp_s only allows 26 files */
cli_dbgmsg("fileblobSetFilename: _mktemp_s(%s) failed: %s\n", fullname, strerror(errno));
name = cli_gentemp(dir);
*** /home/njh/src/clamav-devel/./libclamav/others.c 2006-09-23 13:37:39.000000000 +0100
--- ./libclamav/others.c 2006-10-09 21:14:22.000000000 +0100
***************
*** 384,390 ****
--- 384,394 ----
return NULL;
}
+ #if defined(_MSC_VER) && defined(_DEBUG)
+ alloc = _realloc_dbg(ptr, size, _NORMAL_BLOCK, __FILE__, __LINE__);
+ #else
alloc = realloc(ptr, size);
+ #endif
if(!alloc) {
cli_errmsg("cli_realloc(): Can't re-allocate memory to %u byte.\n", size);
*** /home/njh/src/clamav-devel/./libclamav/unrar/unrar.c 2006-09-26 10:11:01.000000000 +0100
--- ./libclamav/unrar/unrar.c 2006-10-09 17:34:56.000000000 +0100
***************
*** 1470,1476 ****
metadata_tail->encrypted = TRUE;
} else /*if (file_header->unpack_size)*/ {
snprintf(filename, 1024, "%s/%lu.ura", dirname, file_count);
! ofd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0600);
if (ofd < 0) {
free(file_header->filename);
free(file_header);
--- 1470,1476 ----
metadata_tail->encrypted = TRUE;
} else /*if (file_header->unpack_size)*/ {
snprintf(filename, 1024, "%s/%lu.ura", dirname, file_count);
! ofd = open(filename, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0600);
if (ofd < 0) {
free(file_header->filename);
free(file_header);
*** /home/njh/src/clamav-devel/./libclamav/binhex.c 2006-10-08 13:25:05.000000000 +0100
--- ./libclamav/binhex.c 2006-08-11 21:05:12.000000000 +0100
***************
*** 18,25 ****
*
* Change History:
* $Log: patches,v $
* Revision 1.13 2006/10/10 21:26:41 njh
* Sync with CVS
*
! * Revision 1.22 2006/07/31 09:19:52 njh
! * Use MAP_PRIVATE
*
* Revision 1.21 2006/07/01 16:17:35 njh
* Added destroy flag
--- 18,25 ----
*
* Change History:
* $Log: patches,v $
* Revision 1.13 2006/10/10 21:26:41 njh
* Sync with CVS
*
! * Revision 1.1 2006/08/11 20:05:13 njh
! * First Draft
*
* Revision 1.21 2006/07/01 16:17:35 njh
* Added destroy flag
***************
*** 82,88 ****
* First draft of binhex.c
*
*/
! static char const rcsid[] = "$Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#include "clamav.h"
--- 82,88 ----
* First draft of binhex.c
*
*/
! static char const rcsid[] = "$Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#include "clamav.h"
***************
*** 197,203 ****
cli_errmsg("No binhex line found\n");
return CL_EFORMAT;
}
!
/* similar to binhexMessage */
messageSetEncoding(m, "x-binhex");
--- 197,203 ----
cli_errmsg("No binhex line found\n");
return CL_EFORMAT;
}
!
/* similar to binhexMessage */
messageSetEncoding(m, "x-binhex");
*** /home/njh/src/clamav-devel/./libclamav/line.h 2006-04-09 20:59:27.000000000 +0100
--- ./libclamav/line.h 2006-08-11 21:05:12.000000000 +0100
***************
*** 17,22 ****
--- 17,25 ----
* MA 02110-1301, USA.
*
* $Log: patches,v $
* Revision 1.13 2006/10/10 21:26:41 njh
* Sync with CVS
*
+ * Revision 1.1 2006/08/11 20:05:13 njh
+ * First Draft
+ *
* Revision 1.5 2006/04/09 19:59:27 kojm
* update GPL headers with new address for FSF
*
*** /home/njh/src/clamav-devel/./libclamav/text.h 2006-07-01 17:17:35.000000000 +0100
--- ./libclamav/text.h 2006-08-11 21:05:12.000000000 +0100
***************
*** 17,22 ****
--- 17,25 ----
* MA 02110-1301, USA.
*
* $Log: patches,v $
* Revision 1.13 2006/10/10 21:26:41 njh
* Sync with CVS
*
+ * Revision 1.1 2006/08/11 20:05:13 njh
+ * First Draft
+ *
* Revision 1.9 2006/07/01 16:17:35 njh
* Added destroy flag
*
*** /home/njh/src/clamav-devel/./libclamav/is_tar.h 2005-03-22 21:26:25.000000000 +0000
--- ./libclamav/is_tar.h 2006-08-11 21:05:12.000000000 +0100
***************
*** 5,11 ****
*
* Created 25 August 1985 by John Gilmore, ihnp4!hoptoad!gnu.
*
! * $Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $ # checkin only
*/
/*
--- 5,11 ----
*
* Created 25 August 1985 by John Gilmore, ihnp4!hoptoad!gnu.
*
! * $Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $ # checkin only
*/
/*
*** /home/njh/src/clamav-devel/./libclamav/is_tar.c 2006-06-17 22:00:44.000000000 +0100
--- ./libclamav/is_tar.c 2006-08-11 21:05:12.000000000 +0100
***************
*** 5,11 ****
* Public Domain version written 26 Aug 1985 John Gilmore (ihnp4!hoptoad!gnu).
*
* @(#)list.c 1.18 9/23/86 Public Domain - gnu
! * $Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $
*
* Comments changed and some code/comments reformatted
* for file command by Ian Darwin.
--- 5,11 ----
* Public Domain version written 26 Aug 1985 John Gilmore (ihnp4!hoptoad!gnu).
*
* @(#)list.c 1.18 9/23/86 Public Domain - gnu
! * $Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $
*
* Comments changed and some code/comments reformatted
* for file command by Ian Darwin.
*** /home/njh/src/clamav-devel/./libclamav/scanners.c 2006-10-09 17:48:45.000000000 +0100
--- ./libclamav/scanners.c 2006-07-31 20:42:08.000000000 +0100
***************
*** 38,43 ****
--- 38,44 ----
#include <netinet/in.h>
#endif
+
#if HAVE_MMAP
#if HAVE_SYS_MMAN_H
#include <sys/mman.h>
***************
*** 48,57 ****
#include <mspack.h>
- #ifndef O_BINARY
- #define O_BINARY 0
- #endif
-
extern short cli_leavetemps_flag;
#include "clamav.h"
--- 49,54 ----
***************
*** 73,79 ****
#include "untar.h"
#include "special.h"
#include "binhex.h"
- #include "js.h"
/* #include "uuencode.h" */
#include "tnef.h"
#include "pst.h"
--- 70,75 ----
***************
*** 1143,1169 ****
return ret;
}
- #ifdef CL_EXPERIMENTAL
- if(ret == CL_CLEAN) {
- char *t = cli_gentemp(NULL);
- if(mkdir(t, 0700)) {
- cli_dbgmsg("ScanHTML -> Can't create temporary directory %s\n", t);
- free(t);
- if(!cli_leavetemps_flag)
- cli_rmdirs(tempname);
- free(tempname);
- return CL_ETMPDIR;
- }
-
- lseek(desc, 0L, SEEK_SET);
- ret = cli_scanjs(t, desc);
- if(ret == CL_CLEAN)
- ret = cli_scandir(t, ctx);
- if(!cli_leavetemps_flag)
- cli_rmdirs(t);
- }
- #endif
-
if (ret == CL_CLEAN) {
snprintf(fullname, 1024, "%s/rfc2397", tempname);
ret = cli_scandir(fullname, ctx);
--- 1139,1144 ----
*** /home/njh/src/clamav-devel/./libclamav/untar.c 2006-08-20 20:42:02.000000000 +0100
--- ./libclamav/untar.c 2006-08-20 20:47:28.000000000 +0100
***************
*** 22,27 ****
--- 22,30 ----
*
* Change History:
* $Log: patches,v $
* Revision 1.13 2006/10/10 21:26:41 njh
* Sync with CVS
*
+ * Revision 1.2 2006/08/20 19:47:28 njh
+ * Fix error return
+ *
* Revision 1.31 2006/08/20 19:42:02 njh
* Fix error return
*
***************
*** 116,122 ****
* First draft
*
*/
! static char const rcsid[] = "$Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#include <stdio.h>
#include <errno.h>
--- 119,125 ----
* First draft
*
*/
! static char const rcsid[] = "$Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#include <stdio.h>
#include <errno.h>
*** /home/njh/src/clamav-devel/./libclamav/untar.h 2006-04-09 20:59:28.000000000 +0100
--- ./libclamav/untar.h 2006-08-11 21:05:12.000000000 +0100
***************
*** 18,23 ****
--- 18,26 ----
*
* Change History:
* $Log: patches,v $
* Revision 1.13 2006/10/10 21:26:41 njh
* Sync with CVS
*
+ * Revision 1.1 2006/08/11 20:05:13 njh
+ * First Draft
+ *
* Revision 1.4 2006/04/09 19:59:28 kojm
* update GPL headers with new address for FSF
*
*** /home/njh/src/clamav-devel/./libclamav/pst.c 2006-09-16 21:22:21.000000000 +0100
--- ./libclamav/pst.c 2006-08-29 08:44:40.000000000 +0100
***************
*** 36,42 ****
* TODO: Remove the vcard handling
* FIXME: The code does little error checking of OOM scenarios
*/
! static char const rcsid[] = "$Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#if HAVE_CONFIG_H
#include "clamav-config.h" /* must come first */
--- 36,42 ----
* TODO: Remove the vcard handling
* FIXME: The code does little error checking of OOM scenarios
*/
! static char const rcsid[] = "$Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#if HAVE_CONFIG_H
#include "clamav-config.h" /* must come first */
***************
*** 57,64 ****
#include "cltypes.h"
#include "others.h"
! #if defined(C_SOLARIS) || defined(C_WINDOWS) || defined(_HPUX_SOURCE)
! typedef uint16_t u_int16_t; /* should be in cltypes.h */
typedef uint32_t u_int32_t;
#endif
--- 57,64 ----
#include "cltypes.h"
#include "others.h"
! #if defined(C_SOLARIS) || defined(C_WINDOWS) /* should be in cltypes.h */
! typedef uint16_t u_int16_t;
typedef uint32_t u_int32_t;
#endif
***************
*** 1193,1199 ****
struct _pst_table_ptr_struct table, table2;
pst_desc desc_rec;
pst_desc_ll *d_ptr=NULL, *d_par=NULL;
! int32_t i = 0, prev_id=-1;
char *buf = NULL, *bptr;
struct _pst_d_ptr_ll {
--- 1193,1199 ----
struct _pst_table_ptr_struct table, table2;
pst_desc desc_rec;
pst_desc_ll *d_ptr=NULL, *d_par=NULL;
! int32_t i = 0, y, prev_id=-1;
char *buf = NULL, *bptr;
struct _pst_d_ptr_ll {
***************
*** 1514,1519 ****
--- 1514,1520 ----
return -1;
}
+ y = 0;
while(table.start != 0 /*&& y < 0x1F && table.start < end_val*/) {
if (table2.start <= table.start) {
***************
*** 2070,2076 ****
}
int32_t _pst_process(pst_num_array *list , pst_item *item) {
! int32_t x;
int32_t next = 0;
pst_item_attach *attach;
pst_item_extra_field *ef;
--- 2071,2077 ----
}
int32_t _pst_process(pst_num_array *list , pst_item *item) {
! int32_t x, t;
int32_t next = 0;
pst_item_attach *attach;
pst_item_extra_field *ef;
***************
*** 2125,2130 ****
--- 2126,2132 ----
MALLOC_EMAIL(item);
memcpy(&(item->email->importance), list->items[x]->data, sizeof(item->email->importance));
LE32_CPU(item->email->importance);
+ t = item->email->importance;
// INC_CHECK_X();
break;
case 0x001A: // PR_MESSAGE_CLASS Ascii type of messages - NOT FOLDERS
***************
*** 2175,2180 ****
--- 2177,2183 ----
MALLOC_EMAIL(item);
memcpy(&(item->email->priority), list->items[x]->data, sizeof(item->email->priority));
LE32_CPU(item->email->priority);
+ t = item->email->priority;
// INC_CHECK_X();
break;
case 0x0029:// PR_READ_RECEIPT_REQUESTED
***************
*** 2209,2214 ****
--- 2212,2218 ----
MALLOC_EMAIL(item);
memcpy(&(item->email->orig_sensitivity), list->items[x]->data, sizeof(item->email->orig_sensitivity));
LE32_CPU(item->email->orig_sensitivity);
+ t = item->email->orig_sensitivity;
// INC_CHECK_X();
break;
case 0x0036: // PR_SENSITIVITY
***************
*** 2221,2226 ****
--- 2225,2231 ----
MALLOC_EMAIL(item);
memcpy(&(item->email->sensitivity), list->items[x]->data, sizeof(item->email->sensitivity));
LE32_CPU(item->email->sensitivity);
+ t = item->email->sensitivity;
// INC_CHECK_X();
break;
case 0x0037: // PR_SUBJECT raw subject
***************
*** 2849,2854 ****
--- 2854,2860 ----
MOVE_NEXT(attach);
memcpy(&(attach->method), list->items[x]->data, sizeof(attach->method));
LE32_CPU(attach->method);
+ t = attach->method;
//INC_CHECK_X();
break;
case 0x370B: // PR_RENDERING_POSITION
*** /home/njh/src/clamav-devel/./libclamav/regex_list.c 2006-10-08 21:42:25.000000000 +0100
--- ./libclamav/regex_list.c 2006-10-09 11:33:08.000000000 +0100
***************
*** 713,718 ****
--- 713,723 ----
static int cli_iswctype(const char c,const enum wctype_t type)
{
+ if(c & 0x80) {
+ cli_dbgmsg("iswctype top bit is set\n");
+ return 0;
+ }
+
switch(type) {
case ALNUM:
return isalnum(c);
***************
*** 738,747 ****
return isprint(c);
case XDIGIT:
return isxdigit(c);
! default: {
! cli_warnmsg("Unknown char class in iswctype\n");
! return 0;
! }
}
}
--- 743,751 ----
return isprint(c);
case XDIGIT:
return isxdigit(c);
! default:
! cli_warnmsg("Unknown char class in iswctype\n");
! return 0;
}
}
*** /home/njh/src/clamav-devel/./libclamav/line.c 2006-04-09 20:59:27.000000000 +0100
--- ./libclamav/line.c 2006-08-11 21:05:12.000000000 +0100
***************
*** 17,22 ****
--- 17,25 ----
* MA 02110-1301, USA.
*
* $Log: patches,v $
* Revision 1.13 2006/10/10 21:26:41 njh
* Sync with CVS
*
+ * Revision 1.1 2006/08/11 20:05:13 njh
+ * First Draft
+ *
* Revision 1.10 2006/04/09 19:59:27 kojm
* update GPL headers with new address for FSF
*
***************
*** 49,55 ****
*
*/
! static char const rcsid[] = "$Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#if HAVE_CONFIG_H
#include "clamav-config.h"
--- 52,58 ----
*
*/
! static char const rcsid[] = "$Id: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#if HAVE_CONFIG_H
#include "clamav-config.h"
*** /home/njh/src/clamav-devel/./libclamav/binhex.h 2006-04-09 20:59:27.000000000 +0100
--- ./libclamav/binhex.h 2006-08-11 21:05:12.000000000 +0100
***************
*** 18,23 ****
--- 18,26 ----
*
* Change History:
* $Log: patches,v $
* Revision 1.13 2006/10/10 21:26:41 njh
* Sync with CVS
*
+ * Revision 1.1 2006/08/11 20:05:13 njh
+ * First Draft
+ *
* Revision 1.4 2006/04/09 19:59:27 kojm
* update GPL headers with new address for FSF
*
*** /home/njh/src/clamav-devel/./libclamav/chmunpack.c 2006-10-09 17:00:07.000000000 +0100
--- ./libclamav/chmunpack.c 2006-10-09 17:31:12.000000000 +0100
***************
*** 829,835 ****
if (mf_in.desc < 0) {
return FALSE;
}
! mf_in.fh = fdopen(mf_in.desc, "r");
if (!mf_in.fh) {
close(mf_in.desc);
return FALSE;
--- 829,835 ----
if (mf_in.desc < 0) {
return FALSE;
}
! mf_in.fh = fdopen(mf_in.desc, "rb");
if (!mf_in.fh) {
close(mf_in.desc);
return FALSE;
***************
*** 844,850 ****
fclose(mf_in.fh);
return FALSE;
}
! mf_out.fh = fdopen(mf_out.desc, "w");
if (!mf_out.fh) {
cli_dbgmsg("fdopen failed\n", filename);
free(mf_in.name);
--- 844,850 ----
fclose(mf_in.fh);
return FALSE;
}
! mf_out.fh = fdopen(mf_out.desc, "wb");
if (!mf_out.fh) {
cli_dbgmsg("fdopen failed\n", filename);
free(mf_in.name);
*** /home/njh/src/clamav-devel/./libclamav/pdf.c 2006-10-08 13:24:32.000000000 +0100
--- ./libclamav/pdf.c 2006-09-17 15:50:58.000000000 +0100
***************
*** 15,21 ****
* 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: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#if HAVE_CONFIG_H
#include "clamav-config.h"
--- 15,21 ----
* 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: patches,v 1.13 2006/10/10 21:26:41 njh Exp $";
#if HAVE_CONFIG_H
#include "clamav-config.h"
***************
*** 178,184 ****
char *md5digest;
size_t length, objlen, streamlen;
char fullname[NAME_MAX + 1];
!
if(q == xrefstart)
break;
if(memcmp(q, "xref", 4) == 0)
--- 178,184 ----
char *md5digest;
size_t length, objlen, streamlen;
char fullname[NAME_MAX + 1];
!
if(q == xrefstart)
break;
if(memcmp(q, "xref", 4) == 0)
***************
*** 297,303 ****
}
} else
fout = open(fullname, O_WRONLY|O_CREAT|O_EXCL|O_TRUNC|O_BINARY, 0600);
! #else
mktemp(fullname);
fout = open(fullname, O_WRONLY|O_CREAT|O_EXCL|O_TRUNC|O_BINARY, 0600);
#endif
--- 297,303 ----
}
} else
fout = open(fullname, O_WRONLY|O_CREAT|O_EXCL|O_TRUNC|O_BINARY, 0600);
! #else
mktemp(fullname);
fout = open(fullname, O_WRONLY|O_CREAT|O_EXCL|O_TRUNC|O_BINARY, 0600);
#endif
*** /home/njh/src/clamav-devel/./clamscan/treewalk.h 2006-06-08 21:00:50.000000000 +0100
--- ./clamscan/treewalk.h 2006-07-26 14:36:44.000000000 +0100
***************
*** 20,26 ****
--- 20,29 ----
#ifndef __TREEWALK_H
#define __TREEWALK_H
+ #ifndef C_WINDOWS
#include <pwd.h>
+ #endif
+
#include <clamav.h>
#include "options.h"
*** /home/njh/src/clamav-devel/./clamscan/others.c 2006-04-09 20:59:26.000000000 +0100
--- ./clamscan/others.c 2006-07-26 15:03:16.000000000 +0100
***************
*** 29,41 ****
--- 29,47 ----
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include <errno.h>
+ #ifndef C_WINDOWS
#include <pwd.h>
+ #endif
#include <sys/types.h>
#include <sys/stat.h>
+ #ifndef C_WINDOWS
#include <sys/wait.h>
#include <sys/time.h>
+ #endif
#include <time.h>
#include <fcntl.h>
#include <signal.h>
***************
*** 73,78 ****
--- 79,92 ----
}
}
+ #ifdef C_WINDOWS
+ /* FIXME: Handle users correctly */
+ int
+ checkaccess(const char *path, const char *username, int mode)
+ {
+ return _access(path, mode);
+ }
+ #else
int checkaccess(const char *path, const char *username, int mode)
{
struct passwd *user;
***************
*** 117,122 ****
--- 131,137 ----
return ret;
}
+ #endif
int match_regex(const char *filename, const char *pattern)
{
*** /home/njh/src/clamav-devel/./clamscan/treewalk.c 2006-10-09 10:09:17.000000000 +0100
--- ./clamscan/treewalk.c 2006-10-09 21:23:06.000000000 +0100
***************
*** 24,35 ****
--- 24,39 ----
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include <sys/stat.h>
#include <sys/types.h>
+ #ifndef C_WINDOWS
#include <sys/wait.h>
#include <grp.h>
#include <dirent.h>
+ #endif
#include <errno.h>
#include "shared.h"
***************
*** 97,103 ****
if((dd = opendir(dirname)) != NULL) {
while((dent = readdir(dd))) {
! #ifndef C_INTERIX
if(dent->d_ino)
#endif
{
--- 101,107 ----
if((dd = opendir(dirname)) != NULL) {
while((dent = readdir(dd))) {
! #if (!defined(C_INTERIX)) && (!defined(C_WINDOWS)) && (!defined(C_CYGWIN))
if(dent->d_ino)
#endif
{
***************
*** 136,141 ****
--- 140,152 ----
}
+ #ifdef C_WINDOWS
+ int
+ clamav_rmdirs(const char *dir)
+ {
+ return rmdirs(dir);
+ }
+ #else
int clamav_rmdirs(const char *dir)
{
#ifndef C_CYGWIN
***************
*** 184,189 ****
--- 195,201 ----
}
}
+ #endif
int fixperms(const char *dirname)
{
***************
*** 195,201 ****
if((dd = opendir(dirname)) != NULL) {
while((dent = readdir(dd))) {
! #ifndef C_INTERIX
if(dent->d_ino)
#endif
{
--- 207,213 ----
if((dd = opendir(dirname)) != NULL) {
while((dent = readdir(dd))) {
! #if (!defined(C_INTERIX)) && (!defined(C_WINDOWS)) && (!defined(C_CYGWIN))
if(dent->d_ino)
#endif
{
***************
*** 241,247 ****
if((dd = opendir(dirname)) != NULL) {
while((dent = readdir(dd))) {
! #ifndef C_INTERIX
if(dent->d_ino)
#endif
{
--- 253,259 ----
if((dd = opendir(dirname)) != NULL) {
while((dent = readdir(dd))) {
! #if (!defined(C_INTERIX)) && (!defined(C_WINDOWS)) && (!defined(C_CYGWIN))
if(dent->d_ino)
#endif
{
*** /home/njh/src/clamav-devel/./clamscan/manager.c 2006-09-15 13:27:22.000000000 +0100
--- ./clamscan/manager.c 2006-10-10 09:21:58.000000000 +0100
***************
*** 30,40 ****
--- 30,48 ----
#include <ctype.h>
#include <sys/stat.h>
#include <sys/types.h>
+ #ifdef C_WINDOWS
+ #include <sys/utime.h>
+ #else
#include <sys/wait.h>
#include <utime.h>
+ #endif
+ #ifdef HAVE_INITGROUPS
#include <grp.h>
+ #endif
#include <fcntl.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include <sys/types.h>
#include <signal.h>
#include <clamav.h>
***************
*** 57,62 ****
--- 65,75 ----
dev_t procdev;
#endif
+ #ifdef C_WINDOWS
+ #undef P_tmpdir
+
+ #define P_tmpdir "C:\\WINDOWS\\TEMP"
+ #endif
int scanmanager(const struct optstruct *opt)
{
***************
*** 69,77 ****
struct stat sb;
char *fullpath = NULL, cwd[1024];
-
/* njh@bandsman.co.uk: BeOS */
! #if !defined(C_CYGWIN) && !defined(C_OS2) && !defined(C_BEOS)
if(!geteuid()) {
if((user = getpwnam(UNPUSER)) == NULL) {
logg("^Can't get information about user "UNPUSER"\n");
--- 82,89 ----
struct stat sb;
char *fullpath = NULL, cwd[1024];
/* njh@bandsman.co.uk: BeOS */
! #if !defined(C_CYGWIN) && !defined(C_OS2) && !defined(C_BEOS) && !defined(C_WINDOWS)
if(!geteuid()) {
if((user = getpwnam(UNPUSER)) == NULL) {
logg("^Can't get information about user "UNPUSER"\n");
***************
*** 360,371 ****
--- 372,385 ----
return 0;
}
+ #ifndef C_WINDOWS
if(geteuid())
if(checkaccess(filename, NULL, R_OK) != 1) {
if(!printinfected)
logg("%s: Access denied\n", filename);
return 0;
}
+ #endif
claminfo.files++;
***************
*** 476,482 ****
tmpdir = getenv("TMPDIR");
if(tmpdir == NULL)
! #ifdef P_tmpdir
tmpdir = P_tmpdir;
#else
tmpdir = "/tmp";
--- 490,496 ----
tmpdir = getenv("TMPDIR");
if(tmpdir == NULL)
! #ifdef P_tmpdir
tmpdir = P_tmpdir;
#else
tmpdir = "/tmp";
***************
*** 495,501 ****
exit(63); /* critical */
}
! #ifndef C_OS2
if(user)
chown(gendir, user->pw_uid, user->pw_gid);
#endif
--- 509,516 ----
exit(63); /* critical */
}
! #if (!defined(C_OS2)) && (!defined(C_WINDOWS))
! /* FIXME: do the correct native windows way */
if(user)
chown(gendir, user->pw_uid, user->pw_gid);
#endif
***************
*** 674,680 ****
tmpdir = getenv("TMPDIR");
if(tmpdir == NULL)
! #ifdef P_tmpdir
tmpdir = P_tmpdir;
#else
tmpdir = "/tmp";
--- 689,695 ----
tmpdir = getenv("TMPDIR");
if(tmpdir == NULL)
! #ifdef P_tmpdir
tmpdir = P_tmpdir;
#else
tmpdir = "/tmp";
***************
*** 710,716 ****
fixperms(gendir);
! #ifndef C_OS2
if(user) {
chown(gendir, user->pw_uid, user->pw_gid);
chown(tmpfile, user->pw_uid, user->pw_gid);
--- 725,731 ----
fixperms(gendir);
! #if (!defined(C_OS2)) && (!defined(C_WINDOWS))
if(user) {
chown(gendir, user->pw_uid, user->pw_gid);
chown(tmpfile, user->pw_uid, user->pw_gid);
***************
*** 753,759 ****
logg("*Scanning %s\n", filename);
! if((fd = open(filename, O_RDONLY)) == -1) {
logg("^Can't open file %s\n", filename);
return 54;
}
--- 768,774 ----
logg("*Scanning %s\n", filename);
! if((fd = open(filename, O_RDONLY|O_BINARY)) == -1) {
logg("^Can't open file %s\n", filename);
return 54;
}
***************
*** 788,794 ****
tmpdir = getenv("TMPDIR");
if(tmpdir == NULL)
! #ifdef P_tmpdir
tmpdir = P_tmpdir;
#else
tmpdir = "/tmp";
--- 803,809 ----
tmpdir = getenv("TMPDIR");
if(tmpdir == NULL)
! #ifdef P_tmpdir
tmpdir = P_tmpdir;
#else
tmpdir = "/tmp";
***************
*** 806,811 ****
--- 821,833 ----
return 63;
}
+ #ifdef C_WINDOWS
+ if(setmode(fileno(stdin), O_BINARY) < 0) {
+ logg("^Can't set binary mode on stdin\n");
+ return 63;
+ }
+ #endif
+
while((ret = fread(buff, 1, FILEBUFF, stdin)))
fwrite(buff, 1, ret, fs);
***************
*** 840,845 ****
--- 862,875 ----
* 0 -> OK
*/
+ #ifdef C_WINDOWS
+ int clamav_unpack(const char *prog, char **args, const char *tmpdir, const struct passwd *user, const struct optstruct *opt)
+ {
+ /* TODO: use spamvp(P_WAIT, prog, args); */
+ cli_errmsg("clamav_unpack is not supported under Windows yet\n");
+ return -1;
+ }
+ #else
int clamav_unpack(const char *prog, char **args, const char *tmpdir, const struct passwd *user, const struct optstruct *opt)
{
pid_t pid;
***************
*** 870,876 ****
case -1:
return -1;
case 0:
! #ifndef C_CYGWIN
if(!geteuid() && user) {
#ifdef HAVE_SETGROUPS
--- 900,906 ----
case -1:
return -1;
case 0:
! #if (!defined(C_CYGWIN)) && (!defined(C_WINDOWS))
if(!geteuid() && user) {
#ifdef HAVE_SETGROUPS
***************
*** 946,958 ****
return 0;
}
void move_infected(const char *filename, const struct optstruct *opt)
{
char *movedir, *movefilename, *tmp, numext[4 + 1];
struct stat fstat, mfstat;
int n, len, movefilename_size;
! struct utimbuf ubuf;
if(!(movedir = opt_arg(opt, "move"))) {
--- 976,989 ----
return 0;
}
+ #endif
void move_infected(const char *filename, const struct optstruct *opt)
{
char *movedir, *movefilename, *tmp, numext[4 + 1];
struct stat fstat, mfstat;
int n, len, movefilename_size;
! struct _utimbuf ubuf;
if(!(movedir = opt_arg(opt, "move"))) {
***************
*** 1030,1036 ****
}
chmod(movefilename, fstat.st_mode);
! #ifndef C_OS2
chown(movefilename, fstat.st_uid, fstat.st_gid);
#endif
--- 1061,1067 ----
}
chmod(movefilename, fstat.st_mode);
! #if (!defined(C_OS2)) && (!defined(C_WINDOWS))
chown(movefilename, fstat.st_uid, fstat.st_gid);
#endif
*** /home/njh/src/clamav-devel/./clamscan/clamscan.c 2006-09-15 13:27:22.000000000 +0100
--- ./clamscan/clamscan.c 2006-10-10 09:50:04.000000000 +0100
***************
*** 24,32 ****
--- 24,39 ----
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
+ #ifdef C_WINDOWS
+ #include <fcntl.h>
+ #else
#include <sys/time.h>
+ #endif
#include <time.h>
+ #include <ctype.h>
#include "clamscan_opt.h"
#include "others.h"
***************
*** 53,62 ****
int ds, dms, ret;
double mb;
struct timeval t1, t2;
struct timezone tz;
struct optstruct *opt;
const char *pt;
!
opt = opt_parse(argc, argv, clamscan_shortopt, clamscan_longopt, NULL);
if(!opt) {
--- 60,77 ----
int ds, dms, ret;
double mb;
struct timeval t1, t2;
+ #ifndef C_WINDOWS
struct timezone tz;
+ #endif
struct optstruct *opt;
const char *pt;
!
! #if defined(C_WINDOWS) && defined(CL_THREAD_SAFE)
! if(!pthread_win32_process_attach_np()) {
! mprintf("!Can't start the win32 pthreads layer\n");
! return 1;
! }
! #endif
opt = opt_parse(argc, argv, clamscan_shortopt, clamscan_longopt, NULL);
if(!opt) {
***************
*** 174,184 ****
memset(&claminfo, 0, sizeof(struct s_info));
gettimeofday(&t1, &tz);
ret = scanmanager(opt);
if(!opt_check(opt, "disable-summary") && !opt_check(opt, "no-summary")) {
! gettimeofday(&t2, &tz);
ds = t2.tv_sec - t1.tv_sec;
dms = t2.tv_usec - t1.tv_usec;
ds -= (dms < 0) ? (1):(0);
--- 189,210 ----
memset(&claminfo, 0, sizeof(struct s_info));
+ #ifdef C_WINDOWS
+ _set_fmode(_O_BINARY);
+
+ gettimeofday(&t1, NULL);
+ #else
gettimeofday(&t1, &tz);
+ #endif
+
ret = scanmanager(opt);
if(!opt_check(opt, "disable-summary") && !opt_check(opt, "no-summary")) {
! #ifdef C_WINDOWS
! gettimeofday(&t2, NULL);
! #else
! gettimeofday(&t2, &tz);
! #endif
ds = t2.tv_sec - t1.tv_sec;
dms = t2.tv_usec - t1.tv_usec;
ds -= (dms < 0) ? (1):(0);
***************
*** 204,209 ****
--- 230,243 ----
}
opt_free(opt);
+
+ #if defined(C_WINDOWS) && defined(CL_THREAD_SAFE)
+ if(!pthread_win32_process_detach_np()) {
+ mprintf("!Can't stop the win32 pthreads layer\n");
+ return 1;
+ }
+ #endif
+
return ret;
}
*** /home/njh/src/clamav-devel/./clamscan/manager.h 2006-05-15 19:30:18.000000000 +0100
--- ./clamscan/manager.h 2006-10-10 10:12:40.000000000 +0100
***************
*** 21,27 ****
--- 21,29 ----
#define __MANAGER_H
#include <clamav.h>
+ #ifndef C_WINDOWS
#include <pwd.h>
+ #endif
#include "options.h"
int scanmanager(const struct optstruct *opt);
***************
*** 42,45 ****
--- 44,52 ----
void move_infected(const char *filename, const struct optstruct *opt);
+ #ifdef _DEBUG
+ /* breaks mspack/qtmd.c :-( */
+ #define free(p) _free_dbg(p, _NORMAL_BLOCK)
+ #endif
+
#endif
*** /home/njh/src/clamav-devel/./shared/network.c 2006-09-27 17:24:10.000000000 +0100
--- ./shared/network.c 2006-08-01 17:57:24.000000000 +0100
***************
*** 78,84 ****
if(gethostbyname_r(hostname, &hp, (struct hostent_data *)buf) < 0)
return h_errno;
#else
! /* Single thread the code e.g. VS2005 */
struct hostent *hp2;
#ifdef CL_THREAD_SAFE
static pthread_mutex_t hostent_mutex = PTHREAD_MUTEX_INITIALIZER;
--- 78,84 ----
if(gethostbyname_r(hostname, &hp, (struct hostent_data *)buf) < 0)
return h_errno;
#else
! /* Single thread the code */
struct hostent *hp2;
#ifdef CL_THREAD_SAFE
static pthread_mutex_t hostent_mutex = PTHREAD_MUTEX_INITIALIZER;
*** /home/njh/src/clamav-devel/./shared/getopt.c 2004-03-29 01:00:58.000000000 +0100
--- ./shared/getopt.c 2006-07-26 15:49:38.000000000 +0100
***************
*** 41,47 ****
--- 41,49 ----
#include <stdio.h>
+ #ifndef C_WINDOWS
int strncmp(const char *s1, const char *s2, size_t n);
+ #endif
/* Comment out all this code if we are using the GNU C Library, and are not
actually compiling the library itself. This code is part of the GNU C
*** /home/njh/src/clamav-devel/./shared/cdiff.c 2006-10-07 16:31:11.000000000 +0100
--- ./shared/cdiff.c 2006-10-09 19:39:06.000000000 +0100
***************
*** 27,33 ****
--- 27,35 ----
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include "shared/memory.h"
#include "shared/misc.h"
***************
*** 356,362 ****
if(del || xchg) {
! if(!(fh = fopen(ctx->open_db, "r"))) {
logg("!cdiff_cmd_close: Can't open file %s for reading\n", ctx->open_db);
return -1;
}
--- 358,364 ----
if(del || xchg) {
! if(!(fh = fopen(ctx->open_db, "rb"))) {
logg("!cdiff_cmd_close: Can't open file %s for reading\n", ctx->open_db);
return -1;
}
***************
*** 367,373 ****
return -1;
}
! if(!(tmpfh = fopen(tmp, "w"))) {
logg("!cdiff_cmd_close: Can't open file %s for writing\n", tmp);
fclose(fh);
free(tmp);
--- 369,375 ----
return -1;
}
! if(!(tmpfh = fopen(tmp, "wb"))) {
logg("!cdiff_cmd_close: Can't open file %s for writing\n", tmp);
fclose(fh);
free(tmp);
***************
*** 452,458 ****
if(add) {
! if(!(fh = fopen(ctx->open_db, "a"))) {
logg("!cdiff_cmd_close: Can't open file %s for appending\n", ctx->open_db);
return -1;
}
--- 454,460 ----
if(add) {
! if(!(fh = fopen(ctx->open_db, "ab"))) {
logg("!cdiff_cmd_close: Can't open file %s for appending\n", ctx->open_db);
return -1;
}
***************
*** 523,529 ****
return -1;
}
! if(!(src = fopen(srcdb, "r"))) {
logg("!cdiff_cmd_move: Can't open %s for reading\n", srcdb);
free(start_str);
free(end_str);
--- 525,531 ----
return -1;
}
! if(!(src = fopen(srcdb, "rb"))) {
logg("!cdiff_cmd_move: Can't open %s for reading\n", srcdb);
free(start_str);
free(end_str);
***************
*** 540,546 ****
return -1;
}
! if(!(dst = fopen(dstdb, "a"))) {
logg("!cdiff_cmd_move: Can't open %s for appending\n", dstdb);
free(start_str);
free(end_str);
--- 542,548 ----
return -1;
}
! if(!(dst = fopen(dstdb, "ab"))) {
logg("!cdiff_cmd_move: Can't open %s for appending\n", dstdb);
free(start_str);
free(end_str);
***************
*** 561,567 ****
return -1;
}
! if(!(tmp = fopen(tmpdb, "w"))) {
logg("!cdiff_cmd_move: Can't open file %s for writing\n", tmpdb);
free(start_str);
free(end_str);
--- 563,569 ----
return -1;
}
! if(!(tmp = fopen(tmpdb, "wb"))) {
logg("!cdiff_cmd_move: Can't open file %s for writing\n", tmpdb);
free(start_str);
free(end_str);
***************
*** 724,730 ****
return -1;
}
! if(!(fh = fdopen(desc, "r"))) {
logg("!cdiff_apply: fdopen() failed for descriptor %d\n", desc);
close(desc);
return -1;
--- 726,732 ----
return -1;
}
! if(!(fh = fdopen(desc, "rb"))) {
logg("!cdiff_apply: fdopen() failed for descriptor %d\n", desc);
close(desc);
return -1;
*** /home/njh/src/clamav-devel/./shared/network.h 2006-04-09 20:59:28.000000000 +0100
--- ./shared/network.h 2006-07-31 14:59:30.000000000 +0100
***************
*** 21,28 ****
--- 21,33 ----
#ifndef __NETWORK_H
#define __NETWORK_H
+ #ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
+ #endif
+
+ #ifndef C_WINDOWS
#include <netdb.h>
+ #endif
int r_gethostbyname(const char *hostname, struct hostent *hp, char *buf, size_t len);
*** /home/njh/src/clamav-devel/./shared/output.c 2006-08-31 09:03:18.000000000 +0100
--- ./shared/output.c 2006-08-31 09:23:58.000000000 +0100
***************
*** 16,21 ****
--- 16,26 ----
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
+ #ifdef _MSC_VER
+ #include <windows.h>
+ #include <winsock.h>
+ #endif
+
#if HAVE_CONFIG_H
#include "clamav-config.h"
***************
*** 30,42 ****
--- 35,51 ----
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include <fcntl.h>
#include <time.h>
#include <sys/stat.h>
#include <errno.h>
+ #ifndef C_WINDOWS
#include <sys/time.h>
#include <sys/socket.h>
+ #endif
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
***************
*** 122,128 ****
--- 131,139 ----
int logg(const char *str, ...)
{
va_list args, argscpy, argsout;
+ #ifdef F_WRLCK
struct flock fl;
+ #endif
char *pt, *timestr, vbuff[1025];
time_t currtime;
struct stat sb;
***************
*** 140,146 ****
if(logg_file) {
if(!logg_fd) {
old_umask = umask(0037);
! if((logg_fd = fopen(logg_file, "a")) == NULL) {
umask(old_umask);
#ifdef CL_THREAD_SAFE
pthread_mutex_unlock(&logg_mutex);
--- 151,157 ----
if(logg_file) {
if(!logg_fd) {
old_umask = umask(0037);
! if((logg_fd = fopen(logg_file, "at")) == NULL) {
umask(old_umask);
#ifdef CL_THREAD_SAFE
pthread_mutex_unlock(&logg_mutex);
***************
*** 149,154 ****
--- 160,166 ----
return -1;
} else umask(old_umask);
+ #ifdef F_WRLCK
if(logg_lock) {
memset(&fl, 0, sizeof(fl));
fl.l_type = F_WRLCK;
***************
*** 159,164 ****
--- 171,177 ----
return -1;
}
}
+ #endif
}
if(logg_size) {
*** /home/njh/src/clamav-devel/./shared/misc.c 2006-09-27 13:08:01.000000000 +0100
--- ./shared/misc.c 2006-09-17 16:55:56.000000000 +0100
***************
*** 37,52 ****
#include <ctype.h>
#include <errno.h>
! #include "shared/cfgparser.h"
! #include "shared/memory.h"
! #include "shared/output.h"
! #include "libclamav/clamav.h"
! #include "libclamav/cvd.h"
!
! #ifndef O_BINARY
! #define O_BINARY 0
! #endif
char *freshdbdir(void)
--- 37,48 ----
#include <ctype.h>
#include <errno.h>
! #include "clamav.h"
! #include "cfgparser.h"
! #include "memory.h"
! #include "output.h"
! #include "../libclamav/cvd.h"
char *freshdbdir(void)
*** /home/njh/src/clamav-devel/./shared/cfgparser.c 2006-10-10 08:17:06.000000000 +0100
--- ./shared/cfgparser.c 2006-10-10 09:25:36.000000000 +0100
***************
*** 139,145 ****
}
}
! if((fs = fopen(cfgfile, "r")) == NULL) {
/* do not print error message here! */
freecfg(copt);
return NULL;
--- 139,145 ----
}
}
! if((fs = fopen(cfgfile, "rb")) == NULL) {
/* do not print error message here! */
freecfg(copt);
return NULL;
*** /home/njh/src/clamav-devel/./shared/memory.c 2006-04-09 20:59:28.000000000 +0100
--- ./shared/memory.c 2006-10-10 10:09:58.000000000 +0100
***************
*** 19,31 ****
--- 19,41 ----
#include <stdio.h>
#include <stdlib.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
+
+ #if defined(_MSC_VER) && defined(_DEBUG)
+ #include <crtdbg.h>
+ #endif
void *mmalloc(size_t size)
{
void *alloc;
+ #if defined(_MSC_VER) && defined(_DEBUG)
+ alloc = _malloc_dbg(size, _NORMAL_BLOCK, __FILE__, __LINE__);
+ #else
alloc = malloc(size);
+ #endif
if(!alloc) {
fprintf(stderr, "CRITICAL: Can't allocate memory (%ld bytes).\n", (long int) size);
***************
*** 38,44 ****
--- 48,58 ----
{
void *alloc;
+ #if defined(_MSC_VER) && defined(_DEBUG)
+ alloc = _calloc_dbg(nmemb, size, _NORMAL_BLOCK, __FILE__, __LINE__);
+ #else
alloc = calloc(nmemb, size);
+ #endif
if(!alloc) {
fprintf(stderr, "CRITICAL: Can't allocate memory (%ld bytes).\n", (long int) nmemb * size);
*** /home/njh/src/clamav-devel/./shared/memory.h 2006-04-09 20:59:28.000000000 +0100
--- ./shared/memory.h 2006-10-10 10:16:24.000000000 +0100
***************
*** 25,28 ****
--- 25,33 ----
void *mmalloc(size_t size);
void *mcalloc(size_t nmemb, size_t size);
+ #ifdef _DEBUG
+ #include <crtdbg.h>
+ #define free(p) _free_dbg(p, _NORMAL_BLOCK)
+ #endif
+
#endif
*** /home/njh/src/clamav-devel/./freshclam/manager.c 2006-09-15 13:11:55.000000000 +0100
--- ./freshclam/manager.c 2006-09-17 11:23:36.000000000 +0100
***************
*** 20,25 ****
--- 20,29 ----
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
+ #ifdef _MSC_VER
+ #include <windows.h>
+ #include <winsock.h>
+ #endif
#if HAVE_CONFIG_H
#include "clamav-config.h"
***************
*** 27,40 ****
--- 31,50 ----
#include <stdio.h>
#include <stdlib.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include <string.h>
#include <ctype.h>
+ #ifndef C_WINDOWS
#include <netinet/in.h>
#include <netdb.h>
+ #endif
#include <sys/types.h>
+ #ifndef C_WINDOWS
#include <sys/socket.h>
#include <sys/time.h>
+ #endif
#include <time.h>
#include <fcntl.h>
#include <sys/stat.h>
***************
*** 63,68 ****
--- 73,82 ----
#define O_BINARY 0
#endif
+ #ifndef C_WINDOWS
+ #define closesocket(s) close(s)
+ #endif
+
static int wwwconnect(const char *server, const char *proxy, int pport, char *ip, const char *localip, int ctimeout)
{
***************
*** 143,149 ****
--- 157,165 ----
else
port = 8080;
+ #ifndef C_WINDOWS
endservent();
+ #endif
#else
port = 8080;
#endif
***************
*** 178,184 ****
break;
}
logg("^Can't get information about %s: %s\n", hostpt, herr);
! close(socketfd);
return -1;
}
--- 194,200 ----
break;
}
logg("^Can't get information about %s: %s\n", hostpt, herr);
! closesocket(socketfd);
return -1;
}
***************
*** 208,214 ****
}
}
! close(socketfd);
return -2;
}
--- 224,230 ----
}
}
! closesocket(socketfd);
return -2;
}
***************
*** 362,370 ****
if(!ip[0])
strcpy(ip, ipaddr);
! if(write(sd, cmd, strlen(cmd)) < 0) {
logg("!remote_cvdhead: write failed\n");
! close(sd);
return NULL;
}
--- 378,386 ----
if(!ip[0])
strcpy(ip, ipaddr);
! if(send(sd, cmd, strlen(cmd), 0) < 0) {
logg("!remote_cvdhead: write failed\n");
! closesocket(sd);
return NULL;
}
***************
*** 380,386 ****
if(cnt <= 0)
break;
}
! close(sd);
if(bread == -1) {
logg("!remote_cvdhead: Error while reading CVD header from %s\n", hostname);
--- 396,402 ----
if(cnt <= 0)
break;
}
! closesocket(sd);
if(bread == -1) {
logg("!remote_cvdhead: Error while reading CVD header from %s\n", hostname);
***************
*** 498,504 ****
if(!ip[0])
strcpy(ip, ipaddr);
! if(write(sd, cmd, strlen(cmd)) < 0) {
logg("!getfile: Can't write to socket\n");
return 52;
}
--- 514,520 ----
if(!ip[0])
strcpy(ip, ipaddr);
! if(send(sd, cmd, strlen(cmd), 0) < 0) {
logg("!getfile: Can't write to socket\n");
return 52;
}
***************
*** 536,542 ****
/* check whether the resource actually existed or not */
if((strstr(buffer, "HTTP/1.1 404")) != NULL || (strstr(buffer, "HTTP/1.0 404")) != NULL) {
logg("!getfile: %s not found on remote server\n", srcfile);
! close(sd);
return 58;
}
--- 552,558 ----
/* check whether the resource actually existed or not */
if((strstr(buffer, "HTTP/1.1 404")) != NULL || (strstr(buffer, "HTTP/1.0 404")) != NULL) {
logg("!getfile: %s not found on remote server\n", srcfile);
! closesocket(sd);
return 58;
}
***************
*** 565,571 ****
getcwd(currdir, sizeof(currdir));
logg("!getfile: Can't create new file %s in %s\n", destfile, currdir);
logg("Hint: The database directory must be writable for UID %d or GID %d\n", getuid(), getgid());
! close(sd);
return 57;
}
--- 581,587 ----
getcwd(currdir, sizeof(currdir));
logg("!getfile: Can't create new file %s in %s\n", destfile, currdir);
logg("Hint: The database directory must be writable for UID %d or GID %d\n", getuid(), getgid());
! closesocket(sd);
return 57;
}
***************
*** 578,584 ****
logg("getfile: Can't write %d bytes to %s\n", bread, destfile);
unlink(destfile);
close(fd);
! close(sd);
return 57; /* FIXME */
}
--- 594,600 ----
logg("getfile: Can't write %d bytes to %s\n", bread, destfile);
unlink(destfile);
close(fd);
! closesocket(sd);
return 57; /* FIXME */
}
***************
*** 595,601 ****
fflush(stdout);
}
}
! close(sd);
close(fd);
if(totalsize > 0)
--- 611,617 ----
fflush(stdout);
}
}
! closesocket(sd);
close(fd);
if(totalsize > 0)
***************
*** 722,728 ****
return ret;
}
! if((fd = open(tempname, O_RDONLY)) == -1) {
logg("!getpatch: Can't open %s for reading\n", tempname);
unlink(tempname);
free(tempname);
--- 738,744 ----
return ret;
}
! if((fd = open(tempname, O_RDONLY|O_BINARY)) == -1) {
logg("!getpatch: Can't open %s for reading\n", tempname);
unlink(tempname);
free(tempname);
***************
*** 971,979 ****
char ipaddr[16], *dnsreply = NULL, *pt, *localip = NULL, *newver = NULL;
const char *arg = NULL;
struct cfgstruct *cpt;
- #ifdef HAVE_RESOLV_H
const char *dnsdbinfo;
- #endif
time(&currtime);
logg("ClamAV update process started at %s", ctime(&currtime));
--- 987,993 ----
***************
*** 983,989 ****
logg("See the FAQ at http://www.clamav.net/faq.html for an explanation.\n");
#endif
- #ifdef HAVE_RESOLV_H
dnsdbinfo = cfgopt(copt, "DNSDatabaseInfo")->strarg;
if(opt_check(opt, "no-dns")) {
--- 997,1002 ----
***************
*** 1042,1052 ****
}
}
! if(!dnsreply) {
logg("^Invalid DNS reply. Falling back to HTTP mode.\n");
}
}
- #endif /* HAVE_RESOLV_H */
if(opt_check(opt, "local-address")) {
localip = opt_arg(opt, "local-address");
--- 1055,1064 ----
}
}
! if((!dnsreply) && (!ttl)) {
logg("^Invalid DNS reply. Falling back to HTTP mode.\n");
}
}
if(opt_check(opt, "local-address")) {
localip = opt_arg(opt, "local-address");
*** /home/njh/src/clamav-devel/./freshclam/execute.c 2006-08-31 08:38:17.000000000 +0100
--- ./freshclam/execute.c 2006-10-06 23:03:52.000000000 +0100
***************
*** 1,5 ****
/*
! * By Per Jessen <per@computer.org>
*
* 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
--- 1,5 ----
/*
! * By Per Jessen <per@computer.org> with changes by the ClamAV team
*
* 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
***************
*** 23,31 ****
--- 23,36 ----
#include <stdio.h>
#include <stdlib.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include <string.h>
#include <errno.h>
+ #ifdef C_WINDOWS
+ #include <process.h>
+ #endif
#include "shared/output.h"
***************
*** 35,40 ****
--- 40,55 ----
void execute( const char *type, const char *text )
{
+ #ifdef C_WINDOWS
+ if(active_children < MAX_CHILDREN) {
+ if(spawnlp(P_DETACH, text, text, NULL) == -1) {
+ logg("^%s: couldn't execute \"%s\".\n", type, text);
+ return;
+ }
+ active_children++; /* FIXME: this is never reduced */
+ } else
+ logg("^%s: already %d processes active.\n", type, active_children);
+ #else
pid_t pid;
if ( active_children<MAX_CHILDREN )
***************
*** 55,58 ****
--- 70,74 ----
{
logg("^%s: already %d processes active.\n", type, active_children);
}
+ #endif
}
*** /home/njh/src/clamav-devel/./freshclam/nonblock.c 2006-09-15 13:11:55.000000000 +0100
--- ./freshclam/nonblock.c 2006-09-15 13:11:28.000000000 +0100
***************
*** 15,20 ****
--- 15,23 ----
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+ #ifdef _MSC_VER
+ #include <winsock.h>
+ #endif
#if HAVE_CONFIG_H
#include "clamav-config.h"
***************
*** 24,37 ****
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/types.h>
! #include <sys/socket.h>
#include <sys/time.h>
#include <time.h>
#include <fcntl.h>
#include <sys/stat.h>
--- 27,46 ----
#include <stdio.h>
#include <stdlib.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include <string.h>
#include <ctype.h>
+ #ifndef C_WINDOWS
#include <netinet/in.h>
#include <netdb.h>
+ #endif
#include <sys/types.h>
! /*#include <sys/socket.h> /* in nonblock.h */
! #ifndef C_WINDOWS
#include <sys/time.h>
+ #endif
#include <time.h>
#include <fcntl.h>
#include <sys/stat.h>
***************
*** 40,45 ****
--- 49,64 ----
#include "shared/output.h"
+ #if (!defined(EALREADY)) && (defined(WSAEALREADY))
+ #define EALREADY WSAEALREADY
+ #endif
+ #if (!defined(EINPROGRESS)) && (defined(WSAEINPROGRESS))
+ #define EINPROGRESS WSAEINPROGRESS
+ #endif
+ #if (!defined(EISCONN)) && (defined(WSAEISCONN))
+ #define EISCONN WSAEISCONN
+ #endif
+
#ifdef SO_ERROR
#ifndef timercmp
***************
*** 229,234 ****
--- 248,254 ----
static long nonblock_fcntl(int sock)
{
+ #ifdef F_GETFL
long fcntl_flags; /* Save fcntl() flags */
fcntl_flags = fcntl(sock, F_GETFL, 0);
***************
*** 242,257 ****
--- 262,282 ----
}
return fcntl_flags;
+ #else
+ return 0;
+ #endif
}
static void restore_fcntl(int sock, long fcntl_flags)
{
+ #ifdef F_SETFL
if (fcntl_flags != -1) {
if (fcntl(sock, F_SETFL, fcntl_flags)) {
logg("restore_fcntl: restoring: fcntl(%d, F_SETFL): errno=%d: %s\n",
sock, errno, strerror(errno));
}
}
+ #endif
}
/*
*** /home/njh/src/clamav-devel/./freshclam/nonblock.h 2006-09-04 09:24:02.000000000 +0100
--- ./freshclam/nonblock.h 2006-09-04 09:35:10.000000000 +0100
***************
*** 24,30 ****
--- 24,32 ----
#endif
#include <sys/types.h>
+ #ifndef C_WINDOWS
#include <sys/socket.h>
+ #endif
/*
wait_connect(): wrapper for connect(), with explicit 'secs' timeout
*** /home/njh/src/clamav-devel/./freshclam/notify.c 2006-08-31 08:53:35.000000000 +0100
--- ./freshclam/notify.c 2006-08-31 09:26:34.000000000 +0100
***************
*** 16,21 ****
--- 16,26 ----
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
+ #ifdef _MSC_VER
+ #include <windows.h>
+ #include <winsock.h>
+ #endif
+
#if HAVE_CONFIG_H
#include "clamav-config.h"
***************
*** 24,45 ****
--- 29,60 ----
#ifdef BUILD_CLAMD
#include <stdio.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include <sys/types.h>
+ #ifndef C_WINDOWS
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
+ #endif
#include <string.h>
#include "shared/cfgparser.h"
#include "shared/output.h"
+ #ifndef C_WINDOWS
+ #define closesocket(s) close(s)
+ #endif
+
int notify(const char *cfgfile)
{
char buff[20];
+ #ifndef C_WINDOWS
struct sockaddr_un server;
+ #endif
struct sockaddr_in server2;
struct hostent *he;
struct cfgstruct *copt, *cpt;
***************
*** 52,57 ****
--- 67,73 ----
return 1;
}
+ #ifndef C_WINDOWS
if((cpt = cfgopt(copt, "LocalSocket"))->enabled) {
socktype = "UNIX";
server.sun_family = AF_UNIX;
***************
*** 64,76 ****
}
if(connect(sockd, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) {
! close(sockd);
logg("^Clamd was NOT notified: Can't connect to clamd through %s\n", cpt->strarg);
perror("connect()");
return 1;
}
! } else if((cpt = cfgopt(copt, "TCPSocket"))->enabled) {
socktype = "TCP";
#ifdef PF_INET
--- 80,94 ----
}
if(connect(sockd, (struct sockaddr *) &server, sizeof(struct sockaddr_un)) < 0) {
! closesocket(sockd);
logg("^Clamd was NOT notified: Can't connect to clamd through %s\n", cpt->strarg);
perror("connect()");
return 1;
}
! } else
! #endif
! if((cpt = cfgopt(copt, "TCPSocket"))->enabled) {
socktype = "TCP";
#ifdef PF_INET
***************
*** 98,104 ****
if(connect(sockd, (struct sockaddr *) &server2, sizeof(struct sockaddr_in)) < 0) {
! close(sockd);
logg("^Clamd was NOT notified: Can't connect to clamd on %s:%d\n",
inet_ntoa(server2.sin_addr), ntohs(server2.sin_port));
perror("connect()");
--- 116,122 ----
if(connect(sockd, (struct sockaddr *) &server2, sizeof(struct sockaddr_in)) < 0) {
! closesocket(sockd);
logg("^Clamd was NOT notified: Can't connect to clamd on %s:%d\n",
inet_ntoa(server2.sin_addr), ntohs(server2.sin_port));
perror("connect()");
***************
*** 110,132 ****
return 1;
}
! if(write(sockd, "RELOAD", 6) < 0) {
logg("^Clamd was NOT notified: Could not write to %s socket\n", socktype);
perror("write()");
! close(sockd);
return 1;
}
/* TODO: Handle timeout */
memset(buff, 0, sizeof(buff));
! if((bread = read(sockd, buff, sizeof(buff))) > 0)
if(!strstr(buff, "RELOADING")) {
logg("^Clamd was NOT notified: Unknown answer from clamd: '%s'\n", buff);
! close(sockd);
return 1;
}
! close(sockd);
logg("Clamd successfully notified about the update.\n");
return 0;
}
--- 128,150 ----
return 1;
}
! if(send(sockd, "RELOAD", 6, 0) < 0) {
logg("^Clamd was NOT notified: Could not write to %s socket\n", socktype);
perror("write()");
! closesocket(sockd);
return 1;
}
/* TODO: Handle timeout */
memset(buff, 0, sizeof(buff));
! if((bread = recv(sockd, buff, sizeof(buff), 0)) > 0)
if(!strstr(buff, "RELOADING")) {
logg("^Clamd was NOT notified: Unknown answer from clamd: '%s'\n", buff);
! closesocket(sockd);
return 1;
}
! closesocket(sockd);
logg("Clamd successfully notified about the update.\n");
return 0;
}
*** /home/njh/src/clamav-devel/./clamd/clamd.c 2006-09-15 13:30:20.000000000 +0100
--- ./clamd/clamd.c 2006-09-15 13:29:56.000000000 +0100
***************
*** 16,22 ****
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
!
#ifdef _MSC_VER
#include <winsock.h>
#endif
--- 16,22 ----
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
!
#ifdef _MSC_VER
#include <winsock.h>
#endif
*** /home/njh/src/clamav-devel/./clamd/localserver.c 2006-09-13 18:50:46.000000000 +0100
--- ./clamd/localserver.c 2006-09-13 20:15:20.000000000 +0100
***************
*** 24,32 ****
--- 24,36 ----
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
+ #ifndef C_WINDOWS
#include <sys/socket.h>
+ #endif
#include <sys/stat.h>
+ #ifndef C_WINDOWS
#include <sys/un.h>
+ #endif
#include <errno.h>
#include "libclamav/clamav.h"
*** /home/njh/src/clamav-devel/./clamdscan/clamdscan.c 2006-05-15 19:30:18.000000000 +0100
--- ./clamdscan/clamdscan.c 2006-08-04 11:37:50.000000000 +0100
***************
*** 16,21 ****
--- 16,26 ----
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
+
+ #ifdef _MSC_VER
+ #include <windows.h>
+ #include <winsock.h>
+ #endif
#if HAVE_CONFIG_H
#include "clamav-config.h"
***************
*** 24,31 ****
--- 29,44 ----
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
+ #ifdef C_WINDOWS
+ #ifdef CL_THREAD_SAFE
+ #include <pthread.h>
+ #endif
+ #else
#include <sys/time.h>
+ #endif
#include <time.h>
#include <signal.h>
***************
*** 49,62 ****
{
int ds, dms, ret, infected;
struct timeval t1, t2;
struct timezone tz;
time_t starttime;
struct optstruct *opt;
char *clamdscan_accepted[] = { "help", "version", "verbose", "quiet",
"stdout", "log", "move", "remove",
"config-file", "no-summary",
"disable-summary", NULL };
!
opt = opt_parse(argc, argv, clamscan_shortopt, clamscan_longopt, clamdscan_accepted);
if(!opt) {
--- 62,83 ----
{
int ds, dms, ret, infected;
struct timeval t1, t2;
+ #ifndef C_WINDOWS
struct timezone tz;
+ #endif
time_t starttime;
struct optstruct *opt;
char *clamdscan_accepted[] = { "help", "version", "verbose", "quiet",
"stdout", "log", "move", "remove",
"config-file", "no-summary",
"disable-summary", NULL };
!
! #ifdef C_WINDOWS
! if(!pthread_win32_process_attach_np()) {
! mprintf("!Can't start the win32 pthreads layer\n");
! return 1;
! }
! #endif
opt = opt_parse(argc, argv, clamscan_shortopt, clamscan_longopt, clamdscan_accepted);
if(!opt) {
***************
*** 105,117 ****
time(&starttime);
/* ctime() does \n, but I need it once more */
! gettimeofday(&t1, &tz);
ret = client(opt, &infected);
/* TODO: Implement STATUS in clamd */
if(!opt_check(opt, "disable-summary") && !opt_check(opt, "no-summary")) {
gettimeofday(&t2, &tz);
ds = t2.tv_sec - t1.tv_sec;
dms = t2.tv_usec - t1.tv_usec;
ds -= (dms < 0) ? (1):(0);
--- 126,146 ----
time(&starttime);
/* ctime() does \n, but I need it once more */
! #ifdef C_WINDOWS
! gettimeofday(&t1, NULL);
! #else
! gettimeofday(&t1, &tz);
! #endif
ret = client(opt, &infected);
/* TODO: Implement STATUS in clamd */
if(!opt_check(opt, "disable-summary") && !opt_check(opt, "no-summary")) {
+ #ifdef C_WINDOWS
+ gettimeofday(&t2, NULL);
+ #else
gettimeofday(&t2, &tz);
+ #endif
ds = t2.tv_sec - t1.tv_sec;
dms = t2.tv_usec - t1.tv_usec;
ds -= (dms < 0) ? (1):(0);
***************
*** 128,133 ****
--- 157,171 ----
}
opt_free(opt);
+
+ #ifdef C_WINDOWS
+ WSACleanup();
+ if(!pthread_win32_process_detach_np()) {
+ mprintf("!Can't stop the win32 pthreads layer\n");
+ return 1;
+ }
+ #endif
+
exit(ret);
}
*** /home/njh/src/clamav-devel/./clamdscan/client.c 2006-09-12 09:09:03.000000000 +0100
--- ./clamdscan/client.c 2006-09-12 10:37:54.000000000 +0100
***************
*** 16,37 ****
--- 16,44 ----
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
+ #ifdef _MSC_VER
+ #include <winsock.h>
+ #endif
#if HAVE_CONFIG_H
#include "clamav-config.h"
#endif
#include <stdio.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
+ #ifndef C_WINDOWS
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <utime.h>
+ #endif
#include <errno.h>
#ifdef HAVE_SYS_UIO_H
***************
*** 54,65 ****
--- 61,140 ----
# define SOCKET_INET AF_INET
#endif
+ #ifndef C_WINDOWS
+ #define closesocket(s) close(s)
+ #endif
+
/* #define ENABLE_FD_PASSING FIXME: Doesn't work yet */
void move_infected(const char *filename, const struct optstruct *opt);
int notremoved = 0, notmoved = 0;
static int hwaccel = 0;
+ #ifdef C_WINDOWS
+ static int get_a_line(int sockd, char *buf, size_t len);
+
+ static int
+ dsresult(int sockd, const struct optstruct *opt)
+ {
+ char buff[BUFSIZ], *pt;
+ int infected = 0, waserror = 0;
+
+ while(get_a_line(sockd, buff, sizeof(buff))) {
+ if(strstr(buff, "FOUND\n")) {
+ infected++;
+ logg("%s", buff);
+ if(opt_check(opt, "move")) {
+ /* filename: Virus FOUND */
+ if((pt = strrchr(buff, ':'))) {
+ *pt = 0;
+ move_infected(buff, opt);
+ } else
+ mprintf("@Broken data format. File not moved.\n");
+ } else if(opt_check(opt, "remove")) {
+ if(!(pt = strrchr(buff, ':')))
+ mprintf("@Broken data format. File not removed.\n");
+ else {
+ *pt = 0;
+ if(unlink(buff)) {
+ mprintf("%s: Can't remove.\n", buff);
+ logg("%s: Can't remove.\n", buff);
+ notremoved++;
+ } else {
+ mprintf("%s: Removed.\n", buff);
+ logg("%s: Removed.\n", buff);
+ }
+ }
+ }
+ }
+
+ if(strstr(buff, "ERROR\n")) {
+ logg("%s", buff);
+ waserror = 1;
+ }
+ }
+
+ return infected ? infected : (waserror ? -1 : 0);
+ }
+
+ static int
+ get_a_line(int sockd, char *buf, size_t len)
+ {
+ char *ptr;
+
+ for(ptr = buf; ptr < &buf[len]; ptr++) {
+ /* FIXME: very inefficient to call recv so many times */
+ if(recv(sockd, ptr, sizeof(char), 0) <= 0)
+ return 0;
+ if(*ptr == '\n') {
+ *++ptr = '\0';
+ return 1;
+ }
+ }
+ return 1;
+ }
+
+ #else
static int dsresult(int sockd, const struct optstruct *opt)
{
int infected = 0, waserror = 0;
***************
*** 67,76 ****
FILE *fd;
! #ifndef C_OS2
if((fd = fdopen(dup(sockd), "r")) == NULL) {
! #else /* FIXME: accoriding to YD OS/2 does not support dup() for sockets */
! if((fd = fdopen(sockd, "r")) == NULL) {
#endif
logg("^Can't open descriptor for reading.\n");
return -1;
--- 142,151 ----
FILE *fd;
! #ifndef (C_OS2)
if((fd = fdopen(dup(sockd), "r")) == NULL) {
! #else /* FIXME: according to YD OS/2 does not support dup() for sockets */
! if((fd = fdopen(sockd, "rb")) == NULL) {
#endif
logg("^Can't open descriptor for reading.\n");
return -1;
***************
*** 118,123 ****
--- 193,199 ----
return infected ? infected : (waserror ? -1 : 0);
}
+ #endif /* C_WINDOWS */
static int dsfile(int sockd, const char *scantype, const char *filename, const struct optstruct *opt)
{
***************
*** 128,134 ****
scancmd = mcalloc(strlen(filename) + 20, sizeof(char));
sprintf(scancmd, "%s %s", scantype, filename);
! if(write(sockd, scancmd, strlen(scancmd)) <= 0) {
logg("^Can't write to the socket.\n");
free(scancmd);
return -1;
--- 204,210 ----
scancmd = mcalloc(strlen(filename) + 20, sizeof(char));
sprintf(scancmd, "%s %s", scantype, filename);
! if(send(sockd, scancmd, strlen(scancmd), 0) <= 0) {
logg("^Can't write to the socket.\n");
free(scancmd);
return -1;
***************
*** 202,208 ****
char buff[4096], *pt;
! if(write(sockd, "STREAM", 6) <= 0) {
logg("^Can't write to the socket.\n");
return 2;
}
--- 278,284 ----
char buff[4096], *pt;
! if(send(sockd, "STREAM", 6, 0) <= 0) {
logg("^Can't write to the socket.\n");
return 2;
}
***************
*** 312,318 ****
--- 388,396 ----
static int dconnect(const struct optstruct *opt)
{
+ #ifndef C_WINDOWS
struct sockaddr_un server;
+ #endif
struct sockaddr_in server2;
struct hostent *he;
struct cfgstruct *copt, *cpt;
***************
*** 328,341 ****
return -1;
}
memset((char *) &server, 0, sizeof(server));
memset((char *) &server2, 0, sizeof(server2));
/* Set default address to connect to */
server2.sin_addr.s_addr = inet_addr("127.0.0.1");
- if((cpt = cfgopt(copt, "LocalSocket"))->enabled) {
server.sun_family = AF_UNIX;
strncpy(server.sun_path, cpt->strarg, sizeof(server.sun_path));
--- 406,424 ----
return -1;
}
+ #ifndef C_WINDOWS
memset((char *) &server, 0, sizeof(server));
+ #endif
memset((char *) &server2, 0, sizeof(server2));
/* Set default address to connect to */
server2.sin_addr.s_addr = inet_addr("127.0.0.1");
+ if((cpt = cfgopt(copt, "LocalSocket"))->enabled) {
+ #ifdef C_WINDOWS
+ logg("^LocalSocket is not supported under Windows");
+ #else
server.sun_family = AF_UNIX;
strncpy(server.sun_path, cpt->strarg, sizeof(server.sun_path));
***************
*** 353,360 ****
--- 436,452 ----
freecfg(copt);
return -1;
}
+ #endif
} else if((cpt = cfgopt(copt, "TCPSocket"))->enabled) {
+ #ifdef C_WINDOWS
+ WSADATA wsaData;
+
+ if(WSAStartup(MAKEWORD(2,2), &wsaData) != NO_ERROR) {
+ logg("!Error at WSAStartup(): %d\n", WSAGetLastError());
+ return -1;
+ }
+ #endif
if((sockd = socket(SOCKET_INET, SOCK_STREAM, 0)) < 0) {
perror("socket()");
***************
*** 368,374 ****
if((cpt = cfgopt(copt, "TCPAddr"))->enabled) {
if ((he = gethostbyname(cpt->strarg)) == 0) {
! close(sockd);
perror("gethostbyname()");
logg("^Can't lookup clamd hostname.\n");
freecfg(copt);
--- 460,466 ----
if((cpt = cfgopt(copt, "TCPAddr"))->enabled) {
if ((he = gethostbyname(cpt->strarg)) == 0) {
! closesocket(sockd);
perror("gethostbyname()");
logg("^Can't lookup clamd hostname.\n");
freecfg(copt);
***************
*** 378,384 ****
}
if(connect(sockd, (struct sockaddr *) &server2, sizeof(struct sockaddr_in)) < 0) {
! close(sockd);
perror("connect()");
logg("^Can't connect to clamd.\n");
freecfg(copt);
--- 470,476 ----
}
if(connect(sockd, (struct sockaddr *) &server2, sizeof(struct sockaddr_in)) < 0) {
! closesocket(sockd);
perror("connect()");
logg("^Can't connect to clamd.\n");
freecfg(copt);
***************
*** 433,439 ****
else
errors++;
! close(sockd);
#if defined(ENABLE_FD_PASSING) && defined(HAVE_SENDMSG) && (defined(HAVE_ACCRIGHTS_IN_MSGHDR) || defined(HAVE_CONTROL_IN_MSGHDR)) && !defined(C_CYGWIN)
} else if(!strcmp(opt->filename, "-")) { /* scan data from stdin */
--- 525,531 ----
else
errors++;
! closesocket(sockd);
#if defined(ENABLE_FD_PASSING) && defined(HAVE_SENDMSG) && (defined(HAVE_ACCRIGHTS_IN_MSGHDR) || defined(HAVE_CONTROL_IN_MSGHDR)) && !defined(C_CYGWIN)
} else if(!strcmp(opt->filename, "-")) { /* scan data from stdin */
***************
*** 494,500 ****
else
errors++;
! close(sockd);
break;
default:
--- 586,592 ----
else
errors++;
! closesocket(sockd);
break;
default:
***************
*** 515,521 ****
--- 607,615 ----
char *movedir, *movefilename, *tmp, numext[4 + 1];
struct stat fstat, mfstat;
int n, len, movefilename_size;
+ #ifndef C_WINDOWS
struct utimbuf ubuf;
+ #endif
if(!(movedir = opt_arg(opt, "move"))) {
***************
*** 600,608 ****
--- 694,704 ----
chmod(movefilename, fstat.st_mode);
chown(movefilename, fstat.st_uid, fstat.st_gid);
+ #ifndef C_WINDOWS
ubuf.actime = fstat.st_atime;
ubuf.modtime = fstat.st_mtime;
utime(movefilename, &ubuf);
+ #endif
if(unlink(filename)) {
logg("^cannot unlink '%s': %s\n", filename, strerror(errno));
*** /home/njh/src/clamav-devel/./clamconf/clamconf.c 2006-09-15 13:38:59.000000000 +0100
--- ./clamconf/clamconf.c 2006-09-15 13:38:42.000000000 +0100
***************
*** 26,32 ****
--- 26,34 ----
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include "cfgparser.h"
#define _GNU_SOURCE
*** /home/njh/src/clamav-devel/./sigtool/sigtool.c 2006-09-27 11:29:31.000000000 +0100
--- ./sigtool/sigtool.c 2006-09-13 17:48:54.000000000 +0100
***************
*** 270,276 ****
int i;
struct stat sb;
char file[32], *md5;
! char *extlist[] = { "db", "fp", "hdb", "mdb", "ndb", "pdb", "rmd", "zmd", "sdb", NULL };
snprintf(file, sizeof(file), "%s.info", db);
--- 270,276 ----
int i;
struct stat sb;
char file[32], *md5;
! char *extlist[] = { "db", "fp", "hdb", "ndb", "rmd", "zmd", "sdb", NULL };
snprintf(file, sizeof(file), "%s.info", db);
***************
*** 345,353 ****
if(stat("main.db", &foo) == -1 && stat("daily.db", &foo) == -1 &&
stat("main.hdb", &foo) == -1 && stat("daily.hdb", &foo) == -1 &&
- stat("main.mdb", &foo) == -1 && stat("daily.mdb", &foo) == -1 &&
stat("main.ndb", &foo) == -1 && stat("daily.ndb", &foo) == -1 &&
- stat("main.pdb", &foo) == -1 && stat("daily.pdb", &foo) == -1 &&
stat("main.sdb", &foo) == -1 && stat("daily.sdb", &foo) == -1 &&
stat("main.zmd", &foo) == -1 && stat("daily.zmd", &foo) == -1 &&
stat("main.rmd", &foo) == -1 && stat("daily.rmd", &foo) == -1)
--- 345,351 ----
***************
*** 368,374 ****
} else {
lines = countlines("main.db") + countlines("daily.db") +
countlines("main.hdb") + countlines("daily.hdb") +
- countlines("main.mdb") + countlines("daily.mdb") +
countlines("main.ndb") + countlines("daily.ndb") +
countlines("main.sdb") + countlines("daily.sdb") +
countlines("main.zmd") + countlines("daily.zmd") +
--- 366,371 ----
***************
*** 484,493 ****
"main.ndb", "daily.ndb", "main.sdb",
"daily.sdb", "main.zmd", "daily.zmd",
"main.rmd", "daily.rmd", "main.fp",
! "daily.fp", "main.mdb", "daily.mdb",
! "daily.info", "main.info", "main.wdb",
! "daily.wdb", "main.pdb", "daily.pdb",
! NULL };
args[2] = tarfile;
if(!opt_check(opt, "debug")) {
if((dn = open("/dev/null", O_WRONLY)) == -1) {
--- 481,487 ----
"main.ndb", "daily.ndb", "main.sdb",
"daily.sdb", "main.zmd", "daily.zmd",
"main.rmd", "daily.rmd", "main.fp",
! "daily.fp", "daily.info", "main.info", NULL };
args[2] = tarfile;
if(!opt_check(opt, "debug")) {
if((dn = open("/dev/null", O_WRONLY)) == -1) {
***************
*** 818,824 ****
if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..") &&
(cli_strbcasestr(dent->d_name, ".db") ||
cli_strbcasestr(dent->d_name, ".hdb") ||
- cli_strbcasestr(dent->d_name, ".mdb") ||
cli_strbcasestr(dent->d_name, ".ndb") ||
cli_strbcasestr(dent->d_name, ".sdb") ||
cli_strbcasestr(dent->d_name, ".zmd") ||
--- 812,817 ----
***************
*** 946,952 ****
mprintf("%s\n", start);
}
! } else if(cli_strbcasestr(filename, ".hdb") || cli_strbcasestr(filename, ".mdb")) { /* hash database */
while(fgets(buffer, FILEBUFF, fd)) {
line++;
--- 939,945 ----
mprintf("%s\n", start);
}
! } else if(cli_strbcasestr(filename, ".hdb")) { /* hash database */
while(fgets(buffer, FILEBUFF, fd)) {
line++;
*** /home/njh/src/clamav-devel/./sigtool/vba.c 2006-04-09 20:59:28.000000000 +0100
--- ./sigtool/vba.c 2006-08-04 13:32:54.000000000 +0100
***************
*** 17,30 ****
--- 17,38 ----
* MA 02110-1301, USA.
*/
+ #if HAVE_CONFIG_H
+ #include "clamav-config.h"
+ #endif
+
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+ #ifdef HAVE_UNISTD_H
#include <unistd.h>
+ #endif
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+ #ifndef C_WINDOWS
#include <dirent.h>
+ #endif
#include <clamav.h>
#include <ctype.h>
***************
*** 963,969 ****
--- 971,981 ----
if ((dd = opendir (dirname)) != NULL) {
while ((dent = readdir (dd))) {
+ #if (!defined(C_CYGWIN)) && (!defined(C_WINDOWS))
if (dent->d_ino) {
+ #else
+ {
+ #endif
if (strcmp (dent->d_name, ".") && strcmp (dent->d_name, "..")) {
/* build the full name */
fname = (char *) cli_calloc (strlen (dirname) + strlen (dent->d_name) + 2, sizeof (char));
***************
*** 1120,1126 ****
--- 1132,1142 ----
if ((dd = opendir (dirname)) != NULL) {
while ((dent = readdir (dd))) {
+ #if (!defined(C_CYGWIN)) && (!defined(C_WINDOWS))
if (dent->d_ino) {
+ #else
+ {
+ #endif
if (strcmp (dent->d_name, ".") && strcmp (dent->d_name, "..")) {
/* build the full name */
fname = calloc (strlen (dirname) + strlen (dent->d_name) + 2, sizeof (char));