Browse code

merge backport fixes for 0.85

git-svn-id: file:///var/lib/svn/clamav-devel/branches/0.88-stable@2777 77e5149b-7576-45b1-b177-96237e5ba77b

Sven Strickroth authored on 2007/02/18 23:22:33
Showing 182 changed files
... ...
@@ -86,6 +86,7 @@ libclamav/mspack: Stuart Caie
86 86
 Patch submitters (in alphabetical order):
87 87
 
88 88
 Kamil Andrusz <wizz*mniam.net>
89
+Alexandre Biancalana <ale*seudns.net>
89 90
 Patrick Bihan-Faou <patrick*mindstep.com>
90 91
 Martin Blapp <mb*imp.ch>
91 92
 Igor Brezac <igor*ipass.net>
... ...
@@ -168,6 +169,7 @@ David Santinoli <david*santinoli.com>
168 168
 Vijay Sarvepalli <vssarvep*office.uncg.edu>
169 169
 Theo Schlossnagle <jesus*omniti.com>
170 170
 Matthew Seaman <m.seaman*infracaninophile.co.uk>
171
+GertJan Spoelman <cav*gjs.cc>
171 172
 Sven Strickroth <sstrickroth*gym-oha.de>
172 173
 Matt Sullivan <matt*sullivan.gen.nz>
173 174
 Joe Talbott <josepht*cstone.net>
... ...
@@ -1,3 +1,24 @@
1
+Wed May 11 17:48:27 CEST 2005
2
+-----------------------------
3
+  V 0.85
4
+  * Fixes backported from CVS:
5
+    - freshclam/manager.c: fix socket descriptor leak in --no-dns mode (patch
6
+      by GertJan Spoelman <cav*gjs.cc>) (tk)
7
+    - clamscan, freshclam: return with 62 (instead of 1) when logger can't be
8
+      initialized (tk)
9
+    - libclamav/matcher-ac.c, libclamav/matcher-bm.c: fix detection problem
10
+      with *.ndb OLE2 signatures (problem reported by Trog) (tk)
11
+    - fix signature offset calculation in large files (problem reported by
12
+      Christoph) (tk)
13
+    - clamav-milter: print segfault diagnostic, even if print_trace is not
14
+      available (njh)
15
+    - sigtool/sigtool.c: fix support for *.fp databases (tk)
16
+    - clamav-milter: Better handling of log file errors. Always send 451 when
17
+      loading a new database when --external is not set (njh)
18
+    - libclamav/tnef.c: If a parse fails and debugging is on, the file being
19
+      scanned is dumped to a temporary file (njh)
20
+    - libclamav/scanners.c: do not report I/O error with encrypted zips (tk)
21
+
1 22
 Fri Apr 29 14:18:18 CEST 2005
2 23
 -----------------------------
3 24
   V 0.84
... ...
@@ -1,86 +1,8 @@
1
-0.84
1
+0.85
2 2
 ----
3 3
 
4
-This version improves detection of JPEG (MS04-028) based exploits, introduces
5
-support for TNEF files and new detection mechanisms. Various bugfixes
6
-(including problems with scanning of digest mail files) and improvements
7
-have been made.
8
-
9
-
10
-** We encourage users to help testing the development versions, now with **
11
-** rewritten RAR code and support for 3.0 archives!			 **
12
-**		    http://www.clamav.net/snapshot/			 **
13
-
14
-
15
--) libclamav:
16
-    + JPEG exploit detector now also checks embedded Photoshop thumbnail images
17
-    + archive meta-data scanner (improves malware detection within encrypted
18
-      archives)
19
-    + support for TNEF (winmail.dat) decoding
20
-    + support for all tar archive formats
21
-    + MD5 implementation replaced with a slightly faster one
22
-    + improved database reloading with reference counter
23
-    + database updateable false positive eliminator
24
-    + speed improvements
25
-    + various bugfixes
26
-
27
--) clamd:
28
-    + VirusEvent now sets CLAM_VIRUSEVENT_FILENAME and CLAM_VIRUSEVENT_VIRUSNAME
29
-      environment variables
30
-
31
--) clamav-milter:
32
-    + improved database update detection when not --external
33
-
34
--) clamscan:
35
-    + new options --include-dir and exclude-dir
36
-    + new option --max-dir-recursion
37
-
38
--) freshclam:
39
-    + new directive LocalIPAddress
40
-
41
--) contrib:
42
-    + clamdmon 1.0 - clamdwatch replacement written in C
43
-
44
--) 3rd party software:
45
-    + hMailServer - open source e-mail server for Microsoft Window
46
-    + pop3.proxy - proxy server for the POP3 protocol
47
-    + HTTP Anti Virus Proxy
48
-    + SmarterMail Filter - ClamAV based plugin for SmarterMail Mail Server
49
-    + smf-clamd - small & fast virus filter for Sendmail
50
-    + Squidclam - replacement for SquidClamAV-Redirector.py written in C
51
-    + QtClamAVclient - remote clamd client based on the Qt Toolkit
52
-    + qpsmtp - flexible smtpd daemon written in Perl
53
-
54
-News:
55
-
56
-Palo Alto, Calif. March 31st 2005 - Clam AntiVirus, the leading Open Source
57
-antivirus toolkit, and Sensory Networks, the leading provider of hardware
58
-acceleration for network security applications, announced a partnership
59
-to provide hardware acceleration support for the Clam AntiVirus suite.
60
-[...]
61
-Support for Sensory Networks' NodalCore acceleration in ClamAV will be
62
-available in version 0.90 of the software suite in Q3 2005. For more
63
-information please visit:
64
-http://www.clamav.net/partners/partner-sn.html
65
-http://www.sensorynetworks.com/
66
-
67
-
68
-The ClamAV project announces the opening of the official merchandise store:
69
-
70
-http://www.cafepress.com/clamav/
71
-
72
-A big thank you to Finndesign (http://www.finndesign.fi) which
73
-volunteered to design the whole line of products, including:
74
-
75
-- t-shirts (for women and men)
76
-- golf shirt
77
-- sweatshirt
78
-- coffee mug
79
-- mousepad
80
-- stickers
81
-- scrapbook
82
-
83
-By purchasing our merchandise, you contribute to the development of ClamAV.
4
+Bugfixes in this release include correct signature offset calculation in large
5
+files, proper handling of encrypted zip archives, and others.
84 6
 
85 7
 --
86 8
 The ClamAV team (http://www.clamav.net/team.html)
... ...
@@ -2,6 +2,15 @@ Note: This README/NEWS file refers to the source tarball. Some things described
2 2
 here may not be available in binary packages.
3 3
 --
4 4
 
5
+0.85
6
+----
7
+
8
+Bugfixes in this release include correct signature offset calculation in large
9
+files, proper handling of encrypted zip archives, and others.
10
+
11
+--
12
+The ClamAV team (http://www.clamav.net/team.html)
13
+
5 14
 0.84
6 15
 ----
7 16
 
... ...
@@ -16,7 +16,8 @@ Fails to compile on Linux/x86 with icc6.0 (complains about stdio.h...)
16 16
 Fails to build on Linux/x86 with icc7.1 with -ipo (fails on libclamav.a - keeps saying run ranlib). Otherwise it builds and runs OK.
17 17
 	icc -O2 -tpp7 -xiMKW -parallel -i_dynamic -w2 -march=pentium4 -mcpu=pentium4 clamav-milter.c...
18 18
 
19
-Tested with Electric Fence 2.2.2
19
+Tested with Electric Fence 2.2.2, and the bounds checking C compiler from
20
+	http://web.inter.nl.net/hcc/Haj.Ten.Brugge/
20 21
 
21 22
 Compiles OK on Linux/ppc (YDL2.3) with gcc2.95.4. Needs -lsmutil to link.
22 23
 	cc -O3 -pedantic -Wuninitialized -Wall -pipe -fomit-frame-pointer -ffast-math -finline-functions -funroll-loop -pthread -lmilter ../libclamav/.libs/libclamav.a ../clamd/cfgfile.o ../clamd/others.o -lsmutil
... ...
@@ -761,6 +762,11 @@ Changes
761 761
 0.84e	18/4/05:	Fixed a multi-threading problem relating to updating
762 762
 				the database when in internal mode
763 763
 			Use HAVE_CTIME_R_[23]
764
+0.84f	4/5/05:		Better handling of open failures for LogFile
765
+			Always send 451 when reloading a database, even if
766
+				dont-wait isn't set
767
+0.84g	9/5/05:		Print an error in the log if a segfault is received
768
+0.85	11/5/05:	Up-issue
764 769
 
765 770
 4. INTERNATIONALISATION
766 771
 
... ...
@@ -775,6 +781,10 @@ author an e-mail.
775 775
 Please send bug reports and/or comments to Nigel Horne <njh@despammed.com> or
776 776
 bugs@clamav.net.
777 777
 
778
+Various tips will go here, for example
779
+	define(`confMILTER_LOG_LEVEL',`22')
780
+Running in the foreground, valgrind, LogSyslog, LogVerbose, LogFile etc.
781
+
778 782
 6. TODO
779 783
 
780 784
 There are several ideas marked as TODO in the source code. If anyone has
... ...
@@ -22,9 +22,9 @@
22 22
  *
23 23
  * For installation instructions see the file INSTALL that came with this file
24 24
  */
25
-static	char	const	rcsid[] = "$Id: clamav-milter.c,v 1.192 2005/04/18 10:53:34 nigelhorne Exp $";
25
+static	char	const	rcsid[] = "$Id: clamav-milter.c,v 1.199 2005/05/11 12:26:44 nigelhorne Exp $";
26 26
 
27
-#define	CM_VERSION	"0.84e"
27
+#define	CM_VERSION	"0.85"
28 28
 
29 29
 #if HAVE_CONFIG_H
30 30
 #include "clamav-config.h"
... ...
@@ -367,11 +367,11 @@ static	int	debug_level = 0;
367 367
 
368 368
 static	pthread_mutex_t	n_children_mutex = PTHREAD_MUTEX_INITIALIZER;
369 369
 static	pthread_cond_t	n_children_cond = PTHREAD_COND_INITIALIZER;
370
-static	unsigned	int	n_children = 0;
370
+static	volatile	unsigned	int	n_children = 0;
371 371
 static	unsigned	int	max_children = 0;
372 372
 static	pthread_mutex_t	accept_mutex = PTHREAD_MUTEX_INITIALIZER;
373 373
 static	pthread_cond_t	accept_cond = PTHREAD_COND_INITIALIZER;
374
-static	int	accept_inputs;
374
+static	volatile	int	accept_inputs;
375 375
 static	int	child_timeout = 0;	/* number of seconds to wait for
376 376
 					 * a child to die. Set to 0 to
377 377
 					 * wait forever
... ...
@@ -441,10 +441,11 @@ static	const	char	*pidfile;
441 441
 #endif
442 442
 #endif
443 443
 
444
+static	void	sigsegv(int sig);
445
+
444 446
 #ifdef HAVE_BACKTRACE
445 447
 #include <execinfo.h>
446 448
 
447
-static	void	sigsegv(int sig);
448 449
 static	void	print_trace(void);
449 450
 
450 451
 #define	BACKTRACE_SIZE	200
... ...
@@ -1029,8 +1030,13 @@ main(int argc, char **argv)
1029 1029
 	if(cfgopt(copt, "LogSyslog")) {
1030 1030
 		int fac = LOG_LOCAL6;
1031 1031
 
1032
-		if(cfgopt(copt, "LogVerbose"))
1032
+		if(cfgopt(copt, "LogVerbose")) {
1033 1033
 			logVerbose = 1;
1034
+#if	0
1035
+			/* Only supported by Sendmail >= V8.13 */
1036
+			smfi_setdbg(6);
1037
+#endif
1038
+		}
1034 1039
 		use_syslog = 1;
1035 1040
 
1036 1041
 		if((cpt = cfgopt(copt, "LogFacility")) != NULL)
... ...
@@ -1329,7 +1335,6 @@ main(int argc, char **argv)
1329 1329
 
1330 1330
 #ifndef	CL_DEBUG
1331 1331
 		close(1);
1332
-		close(2);
1333 1332
 
1334 1333
 		if((cpt = cfgopt(copt, "LogFile"))) {
1335 1334
 			logFile = cpt->strarg;
... ...
@@ -1342,12 +1347,20 @@ main(int argc, char **argv)
1342 1342
 				fprintf(stderr, "%s: LogFile requires full path\n", argv[0]);
1343 1343
 				return EX_CONFIG;
1344 1344
 			}
1345
-		} else
1345
+			if(open(logFile, O_WRONLY|O_APPEND) < 0) {
1346
+				perror(logFile);
1347
+				return EX_CANTCREAT;
1348
+			}
1349
+		} else {
1346 1350
 			logFile = "/dev/console";
1351
+			if(open(logFile, O_WRONLY) < 0) {
1352
+				perror(logFile);
1353
+				return EX_OSFILE;
1354
+			}
1355
+		}
1347 1356
 
1348
-		if((open(logFile, O_WRONLY|O_APPEND) == 1) ||
1349
-		   (open("/dev/null", O_WRONLY) == 1))
1350
-			dup(1);
1357
+		close(2);
1358
+		dup(1);
1351 1359
 		if(cfgopt(copt, "LogTime"))
1352 1360
 			logTime++;
1353 1361
 #endif	/*!CL_DEBUG*/
... ...
@@ -1428,7 +1441,7 @@ main(int argc, char **argv)
1428 1428
 
1429 1429
 #ifdef	SESSION
1430 1430
 	/* FIXME: add localSocket support to watchdog */
1431
-	if(localSocket == NULL)
1431
+	if((localSocket == NULL) || external)
1432 1432
 #endif
1433 1433
 		pthread_create(&tid, NULL, watchdog, NULL);
1434 1434
 
... ...
@@ -1439,26 +1452,49 @@ main(int argc, char **argv)
1439 1439
 
1440 1440
 	if(pidfile) {
1441 1441
 		/* save the PID */
1442
+		char *p, *q;
1442 1443
 		FILE *fd;
1443 1444
 		const mode_t old_umask = umask(0006);
1444 1445
 
1446
+		if(pidfile[0] != '/') {
1447
+			if(use_syslog)
1448
+				syslog(LOG_ERR, _("pidfile: '%s' must be a full pathname"),
1449
+					pidfile);
1450
+			cli_errmsg(_("pidfile '%s' must be a full pathname\n"), pidfile);
1451
+
1452
+			return EX_CONFIG;
1453
+		}
1454
+		p = strdup(pidfile);
1455
+		q = strrchr(p, '/');
1456
+		*q = '\0';
1457
+
1458
+		if(chdir(p) < 0)	/* safety */
1459
+			perror(p);
1460
+		free(p);
1461
+
1445 1462
 		if((fd = fopen(pidfile, "w")) == NULL) {
1446 1463
 			if(use_syslog)
1447 1464
 				syslog(LOG_ERR, _("Can't save PID in file %s"),
1448 1465
 					pidfile);
1449 1466
 			cli_errmsg(_("Can't save PID in file %s\n"), pidfile);
1450 1467
 			return EX_CONFIG;
1451
-		} else {
1468
+		}
1452 1469
 #ifdef	C_LINUX
1453
-			/* Ensure that all threads are kill()ed */
1454
-			fprintf(fd, "-%d\n", (int)getpgrp());
1470
+		/* Ensure that all threads are kill()ed */
1471
+		fprintf(fd, "-%d\n", (int)getpgrp());
1455 1472
 #else
1456
-			fprintf(fd, "%d\n", (int)getpid());
1473
+		fprintf(fd, "%d\n", (int)getpid());
1457 1474
 #endif
1458
-			fclose(fd);
1459
-		}
1475
+		fclose(fd);
1460 1476
 		umask(old_umask);
1461
-	}
1477
+	} else if(tmpdir)
1478
+		chdir(tmpdir);	/* safety */
1479
+	else
1480
+#ifdef	P_tmpdir
1481
+		chdir(P_tmpdir);
1482
+#else
1483
+		chdir("/tmp");
1484
+#endif
1462 1485
 
1463 1486
 	if(cfgopt(copt, "FixStaleSocket")) {
1464 1487
 		/*
... ...
@@ -1490,14 +1526,14 @@ main(int argc, char **argv)
1490 1490
 	}
1491 1491
 
1492 1492
 #if	0
1493
-	/* Only supported by later libmilter */
1493
+	/* Only supported by Sendmail >= V8.13 */
1494 1494
 	if(smfi_opensocket(1) == MI_FAILURE) {
1495 1495
 		cli_errmsg("can't open/create %s\n", port);
1496 1496
 		return EX_CONFIG;
1497 1497
 	}
1498 1498
 #endif
1499 1499
 
1500
-	signal(SIGPIPE, SIG_IGN);
1500
+	signal(SIGPIPE, SIG_IGN);	/* libmilter probably does this as well */
1501 1501
 
1502 1502
 #ifdef	SESSION
1503 1503
 	pthread_mutex_lock(&version_mutex);
... ...
@@ -1515,9 +1551,7 @@ main(int argc, char **argv)
1515 1515
 	pthread_mutex_unlock(&version_mutex);
1516 1516
 #endif
1517 1517
 
1518
-#ifdef HAVE_BACKTRACE
1519 1518
 	(void)signal(SIGSEGV, sigsegv);
1520
-#endif
1521 1519
 
1522 1520
 	return smfi_main();
1523 1521
 }
... ...
@@ -1917,7 +1951,14 @@ clamfi_connect(SMFICTX *ctx, char *hostname, _SOCK_ADDR *hostaddr)
1917 1917
 	accepting = accept_inputs;
1918 1918
 	pthread_mutex_unlock(&accept_mutex);
1919 1919
 	if(!accepting) {
1920
+#if	1
1920 1921
 		cli_warnmsg("Not accepting inputs at the moment\n");
1922
+		/*
1923
+		 * We must refuse here even if dont_wait isn't set, since
1924
+		 * it could take some time, and sendmail could time us out
1925
+		 * and refuse to have anything more to do with us until
1926
+		 * the program is restarted
1927
+		 */
1921 1928
 		if(dont_wait)
1922 1929
 			return SMFIS_TEMPFAIL;
1923 1930
 		pthread_mutex_lock(&accept_mutex);
... ...
@@ -1925,6 +1966,8 @@ clamfi_connect(SMFICTX *ctx, char *hostname, _SOCK_ADDR *hostaddr)
1925 1925
 			pthread_cond_wait(&accept_cond, &accept_mutex);
1926 1926
 		pthread_mutex_unlock(&accept_mutex);
1927 1927
 		cli_warnmsg("Accepting inputs again\n");
1928
+#endif
1929
+		/*return SMFIS_TEMPFAIL;*/
1928 1930
 	}
1929 1931
 
1930 1932
 	if(ctx == NULL) {
... ...
@@ -2425,6 +2468,9 @@ clamfi_body(SMFICTX *ctx, u_char *bodyp, size_t len)
2425 2425
 	cli_dbgmsg(_("clamfi_envbody: %u bytes\n"), len);
2426 2426
 #endif
2427 2427
 
2428
+	if(len == 0)	/* unlikely */
2429
+		return SMFIS_CONTINUE;
2430
+
2428 2431
 	nbytes = clamfi_send(privdata, len, (char *)bodyp);
2429 2432
 	if(streamMaxLength > 0L) {
2430 2433
 		if(privdata->numBytes > streamMaxLength) {
... ...
@@ -2618,8 +2664,8 @@ clamfi_eom(SMFICTX *ctx)
2618 2618
 #endif
2619 2619
 			/*
2620 2620
 			 * TODO: if more than one host has been specified, try
2621
-			 * another one - setting cl_error to SMFIS_TEMPFAIL helps
2622
-			 * by forcing a retry
2621
+			 * another one - setting cl_error to SMFIS_TEMPFAIL
2622
+			 * helps by forcing a retry
2623 2623
 			 */
2624 2624
 			clamfi_cleanup(ctx);
2625 2625
 			syslog(LOG_NOTICE, _("clamfi_eom: read nothing from clamd on %s"), hostname);
... ...
@@ -2962,10 +3008,7 @@ clamfi_eom(SMFICTX *ctx)
2962 2962
 					syslog(LOG_ERR, _("Can't set quarantine user %s"), quarantine);
2963 2963
 				else
2964 2964
 					cli_warnmsg(_("Can't set quarantine user %s\n"), quarantine);
2965
-				if(privdata->discard)
2966
-					rc = SMFIS_DISCARD;
2967
-				else
2968
-					rc = SMFIS_REJECT;
2965
+				rc = (privdata->discard) ? SMFIS_DISCARD : SMFIS_REJECT;
2969 2966
 			} else {
2970 2967
 				if(use_syslog)
2971 2968
 					syslog(LOG_DEBUG, "Redirected virus to %s", quarantine);
... ...
@@ -4366,13 +4409,15 @@ watchdog(void *a)
4366 4366
 			} else if(dbstatus == 0)
4367 4367
 				cli_dbgmsg("Database has not changed\n");
4368 4368
 			else if(dbstatus == 1) {
4369
-				cli_warnmsg("Not reloading database until idle\n");
4369
+				cli_warnmsg("Not reloading database until idle - waiting for %d children\n", n_children);
4370 4370
 				pthread_mutex_lock(&accept_mutex);
4371 4371
 				accept_inputs = 0;
4372 4372
 				pthread_mutex_unlock(&accept_mutex);
4373 4373
 
4374
-				while(n_children > 0)
4374
+				while(n_children > 0) {
4375 4375
 					pthread_cond_wait(&n_children_cond, &n_children_mutex);
4376
+					cli_warnmsg("Waiting for %d children until databae reload\n", n_children);
4377
+				}
4376 4378
 
4377 4379
 				cl_statfree(&dbstat);
4378 4380
 				if(use_syslog)
... ...
@@ -4555,12 +4600,15 @@ watchdog(void *a)
4555 4555
 		} else if(dbstatus == 0)
4556 4556
 			cli_dbgmsg("Database has not changed\n");
4557 4557
 		else if(dbstatus == 1) {
4558
-			cli_warnmsg("Not reloading database until idle\n");
4558
+			cli_warnmsg("Not reloading database until idle - waiting for %d children\n", n_children);
4559 4559
 			pthread_mutex_lock(&accept_mutex);
4560 4560
 			accept_inputs = 0;
4561 4561
 			pthread_mutex_unlock(&accept_mutex);
4562
-			while(n_children > 0)
4562
+
4563
+			while(n_children > 0) {
4563 4564
 				pthread_cond_wait(&n_children_cond, &n_children_mutex);
4565
+				cli_warnmsg("Waiting for %d children until databae reload\n", n_children);
4566
+			}
4564 4567
 			cl_statfree(&dbstat);
4565 4568
 			if(use_syslog)
4566 4569
 				syslog(LOG_WARNING, _("Loading new database"));
... ...
@@ -4571,7 +4619,8 @@ watchdog(void *a)
4571 4571
 			}
4572 4572
 			pthread_mutex_lock(&accept_mutex);
4573 4573
 			accept_inputs = 1;
4574
-			pthread_cond_broadcast(&accept_cond);
4574
+			if(pthread_cond_broadcast(&accept_cond) < 0)
4575
+				perror("pthread_cond_broadcast");
4575 4576
 			pthread_mutex_unlock(&accept_mutex);
4576 4577
 		} else {
4577 4578
 			smfi_stop();
... ...
@@ -4861,19 +4910,23 @@ loadDatabase(void)
4861 4861
 	return cl_statinidir(dbdir, &dbstat);
4862 4862
 }
4863 4863
 
4864
-#ifdef HAVE_BACKTRACE
4865 4864
 static void
4866 4865
 sigsegv(int sig)
4867 4866
 {
4868 4867
 	signal(SIGSEGV, SIG_DFL);
4868
+
4869
+#ifdef HAVE_BACKTRACE
4869 4870
 	print_trace();
4871
+#endif
4872
+
4870 4873
 	if(use_syslog)
4871 4874
 		syslog(LOG_ERR, "Segmentation fault :-( Bye..");
4872
-	cli_dbgmsg("Segmentation fault :-( Bye..\n");
4875
+	cli_errmsg("Segmentation fault :-( Bye..\n");
4873 4876
 
4874 4877
 	smfi_stop();
4875 4878
 }
4876 4879
 
4880
+#ifdef HAVE_BACKTRACE
4877 4881
 static void
4878 4882
 print_trace(void)
4879 4883
 {
... ...
@@ -5038,7 +5091,7 @@ logger(const char *mess)
5038 5038
 #else
5039 5039
 		ctime_r(&currtime, buf);
5040 5040
 #endif
5041
-		fprintf(fout, "%.*s -> %s\n", strlen(buf) - 1, buf, mess);
5041
+		fprintf(fout, "%.*s -> %s\n", (int)strlen(buf) - 1, buf, mess);
5042 5042
 #else	/*!HAVE_CTIME_R*/
5043 5043
 		/* TODO */
5044 5044
 		fprintf(fout, "%s\n", mess);
... ...
@@ -112,7 +112,7 @@ int clamscan(struct optstruct *opt)
112 112
 	logg_file = getargc(opt, 'l');
113 113
 	if(logg("--------------------------------------\n")) {
114 114
 	    mprintf("!Problem with internal logger.\n");
115
-	    return 1;
115
+	    return 62;
116 116
 	}
117 117
     } else 
118 118
 	logg_file = NULL;
... ...
@@ -122,19 +122,19 @@ int clamscan(struct optstruct *opt)
122 122
 	if(!strchr(getargl(opt, "max-space"), 'M') && !strchr(getargl(opt, "max-space"), 'm'))
123 123
 	    if(!isnumb(getargl(opt, "max-space"))) {
124 124
 		mprintf("!--max-space requires natural number.\n");
125
-		exit(40);
125
+		return 40;
126 126
 	    }
127 127
 
128 128
     if(optl(opt, "max-files"))
129 129
 	if(!isnumb(getargl(opt, "max-files"))) {
130 130
 	    mprintf("!--max-files requires natural number.\n");
131
-	    exit(40);
131
+	    return 40;
132 132
 	}
133 133
 
134 134
     if(optl(opt, "max-recursion"))
135 135
 	if(!isnumb(getargl(opt, "max-recursion"))) {
136 136
 	    mprintf("!--max-recursion requires natural number.\n");
137
-	    exit(40);
137
+	    return 40;
138 138
 	}
139 139
 
140 140
 
... ...
@@ -2072,7 +2072,7 @@ fi
2072 2072
 
2073 2073
 # Define the identity of the package.
2074 2074
  PACKAGE=clamav
2075
- VERSION="0.84"
2075
+ VERSION="0.85"
2076 2076
 
2077 2077
 
2078 2078
 cat >>confdefs.h <<_ACEOF
... ...
@@ -2206,7 +2206,7 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
2206 2206
 
2207 2207
 
2208 2208
 LC_CURRENT=1
2209
-LC_REVISION=10
2209
+LC_REVISION=11
2210 2210
 LC_AGE=0
2211 2211
 LIBCLAMAV_VERSION="$LC_CURRENT":"$LC_REVISION":"$LC_AGE"
2212 2212
 
... ...
@@ -18,11 +18,11 @@ dnl   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 18
 
19 19
 AC_INIT(clamscan/clamscan.c)
20 20
 AC_CREATE_TARGET_H(target.h)
21
-AM_INIT_AUTOMAKE(clamav, "0.84")
21
+AM_INIT_AUTOMAKE(clamav, "0.85")
22 22
 AM_CONFIG_HEADER(clamav-config.h)
23 23
 
24 24
 LC_CURRENT=1
25
-LC_REVISION=10
25
+LC_REVISION=11
26 26
 LC_AGE=0
27 27
 LIBCLAMAV_VERSION="$LC_CURRENT":"$LC_REVISION":"$LC_AGE"
28 28
 AC_SUBST(LIBCLAMAV_VERSION)
29 29
Binary files a/docs/clamdoc.pdf and b/docs/clamdoc.pdf differ
... ...
@@ -69,7 +69,7 @@
69 69
     \vspace{3cm}
70 70
     \begin{flushright}
71 71
 	\rule[-1ex]{8cm}{3pt}\\
72
-	\huge Clam AntiVirus 0.84\\
72
+	\huge Clam AntiVirus 0.85\\
73 73
 	\huge \emph{User Manual}\\
74 74
     \end{flushright}
75 75
 
... ...
@@ -2076,8 +2076,6 @@ level required:MD5 checksum:digital signature:builder name:build time (sec)
2076 2076
 				    &		   &	 & \email{<jfp*clearfield.com>}\\ \hline
2077 2077
 	\url{clamav.oltrelinux.com} & 194.242.226.43 & Italy & Luca Gibelli\\
2078 2078
 				    &		     &	     & \email{<l.gibelli*oltrelinux.com>}\\ \hline
2079
-	\url{clamav.artcoms.ru} & 80.244.224.247 & Russia & Syrnikov Alexei\\
2080
-				&		 &	  & \email{<san*artcoms.ru>}\\ \hline
2081 2079
 	\url{xarch.clamav.net} & 129.27.62.129 & Austria & Reini Urban\\
2082 2080
 			       &	       &	 & \email{<rurban*x-ray.at>}\\ \hline
2083 2081
 	\url{clamav.linux.it} & 213.92.8.5 & Italy & Marco d'Itri\\
... ...
@@ -2358,6 +2356,7 @@ level required:MD5 checksum:digital signature:builder name:build time (sec)
2358 2358
 	\item Sergey Smitienko \email{<hunter*comsys.com.ua>}
2359 2359
 	\item Solar Designer \email{<solar*openwall.com>}
2360 2360
 	\item Kevin Spicer \email{<kevin*kevinspicer.co.uk>}
2361
+	\item GertJan Spoelman \email{<cav*gjs.cc>}
2361 2362
 	\item Ole Stanstrup \email{<ole*stanstrup.dk>}
2362 2363
 	\item Adam Stein \email{<adam*scan.mc.xerox.com>}
2363 2364
 	\item Steve \email{<steveb*webtribe.net>}
... ...
@@ -24,18 +24,18 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
24 24
 
25 25
 <BODY >
26 26
 <!--Navigation Panel-->
27
-<A NAME="tex2html305"
27
+<A NAME="tex2html304"
28 28
   HREF="node1.html">
29 29
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
30 30
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png"> 
31 31
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png"> 
32
-<A NAME="tex2html303"
32
+<A NAME="tex2html302"
33 33
   HREF="node1.html">
34 34
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>  
35 35
 <BR>
36
-<B> Next:</B> <A NAME="tex2html306"
36
+<B> Next:</B> <A NAME="tex2html305"
37 37
   HREF="node1.html">Contents</A>
38
- &nbsp <B>  <A NAME="tex2html304"
38
+ &nbsp <B>  <A NAME="tex2html303"
39 39
   HREF="node1.html">Contents</A></B> 
40 40
 <BR>
41 41
 <BR>
... ...
@@ -59,7 +59,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
59 59
 <BR>
60 60
 <BR>
61 61
     <DIV ALIGN="RIGHT">
62
-<BR>	<FONT SIZE="+3">Clam AntiVirus 0.84
62
+<BR>	<FONT SIZE="+3">Clam AntiVirus 0.85
63 63
 <BR>	<FONT SIZE="+3"><I>User Manual</I>
64 64
 <BR>    
65 65
 </FONT></FONT></DIV>
... ...
@@ -71,366 +71,366 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
71 71
 <A NAME="CHILD_LINKS"></A>
72 72
 
73 73
 <UL>
74
-<LI><A NAME="tex2html307"
74
+<LI><A NAME="tex2html306"
75 75
   HREF="node1.html">Contents</A>
76
-<LI><A NAME="tex2html308"
76
+<LI><A NAME="tex2html307"
77 77
   HREF="node2.html">Introduction</A>
78 78
 <UL>
79
-<LI><A NAME="tex2html309"
79
+<LI><A NAME="tex2html308"
80 80
   HREF="node3.html">Features</A>
81
-<LI><A NAME="tex2html310"
81
+<LI><A NAME="tex2html309"
82 82
   HREF="node4.html">Mailing lists</A>
83
-<LI><A NAME="tex2html311"
83
+<LI><A NAME="tex2html310"
84 84
   HREF="node5.html">Virus submitting</A>
85 85
 </UL>
86
-<LI><A NAME="tex2html312"
86
+<LI><A NAME="tex2html311"
87 87
   HREF="node6.html">Base package</A>
88 88
 <UL>
89
-<LI><A NAME="tex2html313"
89
+<LI><A NAME="tex2html312"
90 90
   HREF="node7.html">Supported platforms</A>
91
-<LI><A NAME="tex2html314"
91
+<LI><A NAME="tex2html313"
92 92
   HREF="node8.html">Binary packages</A>
93
-<LI><A NAME="tex2html315"
93
+<LI><A NAME="tex2html314"
94 94
   HREF="node9.html">Daily built snapshots</A>
95 95
 </UL>
96
-<LI><A NAME="tex2html316"
96
+<LI><A NAME="tex2html315"
97 97
   HREF="node10.html">Installation</A>
98 98
 <UL>
99
-<LI><A NAME="tex2html317"
99
+<LI><A NAME="tex2html316"
100 100
   HREF="node11.html">Requirements</A>
101
-<LI><A NAME="tex2html318"
101
+<LI><A NAME="tex2html317"
102 102
   HREF="node12.html">Installing on a shell account</A>
103
-<LI><A NAME="tex2html319"
103
+<LI><A NAME="tex2html318"
104 104
   HREF="node13.html">Adding new system user and group</A>
105
-<LI><A NAME="tex2html320"
105
+<LI><A NAME="tex2html319"
106 106
   HREF="node14.html">Compilation of base package</A>
107
-<LI><A NAME="tex2html321"
107
+<LI><A NAME="tex2html320"
108 108
   HREF="node15.html">Compilation with clamav-milter enabled</A>
109 109
 </UL>
110
-<LI><A NAME="tex2html322"
110
+<LI><A NAME="tex2html321"
111 111
   HREF="node16.html">Configuration</A>
112 112
 <UL>
113
-<LI><A NAME="tex2html323"
113
+<LI><A NAME="tex2html322"
114 114
   HREF="node17.html">clamd</A>
115 115
 <UL>
116
-<LI><A NAME="tex2html324"
116
+<LI><A NAME="tex2html323"
117 117
   HREF="node18.html">On-access scanning</A>
118 118
 </UL>
119
-<LI><A NAME="tex2html325"
119
+<LI><A NAME="tex2html324"
120 120
   HREF="node19.html">clamav-milter</A>
121
-<LI><A NAME="tex2html326"
121
+<LI><A NAME="tex2html325"
122 122
   HREF="node20.html">Testing</A>
123
-<LI><A NAME="tex2html327"
123
+<LI><A NAME="tex2html326"
124 124
   HREF="node21.html">Setting up auto-updating</A>
125
-<LI><A NAME="tex2html328"
125
+<LI><A NAME="tex2html327"
126 126
   HREF="node22.html">Closest mirrors</A>
127 127
 </UL>
128
-<LI><A NAME="tex2html329"
128
+<LI><A NAME="tex2html328"
129 129
   HREF="node23.html">Usage</A>
130 130
 <UL>
131
-<LI><A NAME="tex2html330"
131
+<LI><A NAME="tex2html329"
132 132
   HREF="node24.html">Clam daemon</A>
133
-<LI><A NAME="tex2html331"
133
+<LI><A NAME="tex2html330"
134 134
   HREF="node25.html">Clam<B>d</B>scan</A>
135
-<LI><A NAME="tex2html332"
135
+<LI><A NAME="tex2html331"
136 136
   HREF="node26.html">Clamuko</A>
137
-<LI><A NAME="tex2html333"
137
+<LI><A NAME="tex2html332"
138 138
   HREF="node27.html">Output format</A>
139 139
 <UL>
140
-<LI><A NAME="tex2html334"
140
+<LI><A NAME="tex2html333"
141 141
   HREF="node28.html">clamscan</A>
142
-<LI><A NAME="tex2html335"
142
+<LI><A NAME="tex2html334"
143 143
   HREF="node29.html">clamd</A>
144 144
 </UL>
145 145
 </UL>
146
-<LI><A NAME="tex2html336"
146
+<LI><A NAME="tex2html335"
147 147
   HREF="node30.html">LibClamAV</A>
148 148
 <UL>
149
-<LI><A NAME="tex2html337"
149
+<LI><A NAME="tex2html336"
150 150
   HREF="node31.html">Licence</A>
151
-<LI><A NAME="tex2html338"
151
+<LI><A NAME="tex2html337"
152 152
   HREF="node32.html">Features</A>
153 153
 <UL>
154
-<LI><A NAME="tex2html339"
154
+<LI><A NAME="tex2html338"
155 155
   HREF="node33.html">Archives and compressed files</A>
156
-<LI><A NAME="tex2html340"
156
+<LI><A NAME="tex2html339"
157 157
   HREF="node34.html">Mail files</A>
158 158
 </UL>
159
-<LI><A NAME="tex2html341"
159
+<LI><A NAME="tex2html340"
160 160
   HREF="node35.html">API</A>
161 161
 <UL>
162
-<LI><A NAME="tex2html342"
162
+<LI><A NAME="tex2html341"
163 163
   HREF="node36.html">Header file</A>
164
-<LI><A NAME="tex2html343"
164
+<LI><A NAME="tex2html342"
165 165
   HREF="node37.html">Database loading</A>
166
-<LI><A NAME="tex2html344"
166
+<LI><A NAME="tex2html343"
167 167
   HREF="node38.html">Error handling</A>
168
-<LI><A NAME="tex2html345"
168
+<LI><A NAME="tex2html344"
169 169
   HREF="node39.html">Database structure</A>
170 170
 </UL>
171
-<LI><A NAME="tex2html346"
171
+<LI><A NAME="tex2html345"
172 172
   HREF="node40.html">Database reloading</A>
173 173
 <UL>
174
-<LI><A NAME="tex2html347"
174
+<LI><A NAME="tex2html346"
175 175
   HREF="node41.html">Data scan functions</A>
176
-<LI><A NAME="tex2html348"
176
+<LI><A NAME="tex2html347"
177 177
   HREF="node42.html">Memory</A>
178
-<LI><A NAME="tex2html349"
178
+<LI><A NAME="tex2html348"
179 179
   HREF="node43.html">clamav-config</A>
180
-<LI><A NAME="tex2html350"
180
+<LI><A NAME="tex2html349"
181 181
   HREF="node44.html">Example</A>
182 182
 </UL>
183
-<LI><A NAME="tex2html351"
183
+<LI><A NAME="tex2html350"
184 184
   HREF="node45.html">CVD format</A>
185 185
 </UL>
186
-<LI><A NAME="tex2html352"
186
+<LI><A NAME="tex2html351"
187 187
   HREF="node46.html">Frequently Asked Questions</A>
188
-<LI><A NAME="tex2html353"
188
+<LI><A NAME="tex2html352"
189 189
   HREF="node47.html">Third party software</A>
190 190
 <UL>
191
-<LI><A NAME="tex2html354"
191
+<LI><A NAME="tex2html353"
192 192
   HREF="node48.html"><I>MTA + ClamAV</I></A>
193 193
 <UL>
194
-<LI><A NAME="tex2html355"
194
+<LI><A NAME="tex2html354"
195 195
   HREF="node49.html">amavisd-new</A>
196
-<LI><A NAME="tex2html356"
196
+<LI><A NAME="tex2html355"
197 197
   HREF="node50.html">AMaViS - "Next Generation"</A>
198
-<LI><A NAME="tex2html357"
198
+<LI><A NAME="tex2html356"
199 199
   HREF="node51.html">ClamdMail</A>
200
-<LI><A NAME="tex2html358"
200
+<LI><A NAME="tex2html357"
201 201
   HREF="node52.html">cgpav</A>
202
-<LI><A NAME="tex2html359"
202
+<LI><A NAME="tex2html358"
203 203
   HREF="node53.html">ClamCour</A>
204
-<LI><A NAME="tex2html360"
204
+<LI><A NAME="tex2html359"
205 205
   HREF="node54.html">clamfilter</A>
206
-<LI><A NAME="tex2html361"
206
+<LI><A NAME="tex2html360"
207 207
   HREF="node55.html">ClamSMTP</A>
208
-<LI><A NAME="tex2html362"
208
+<LI><A NAME="tex2html361"
209 209
   HREF="node56.html">clapf</A>
210
-<LI><A NAME="tex2html363"
210
+<LI><A NAME="tex2html362"
211 211
   HREF="node57.html">DSpamPD</A>
212
-<LI><A NAME="tex2html364"
212
+<LI><A NAME="tex2html363"
213 213
   HREF="node58.html">exiscan</A>
214
-<LI><A NAME="tex2html365"
214
+<LI><A NAME="tex2html364"
215 215
   HREF="node59.html">Gadoyanvirus</A>
216
-<LI><A NAME="tex2html366"
216
+<LI><A NAME="tex2html365"
217 217
   HREF="node60.html">hMailServer</A>
218
-<LI><A NAME="tex2html367"
218
+<LI><A NAME="tex2html366"
219 219
   HREF="node61.html">IVS Milter</A>
220
-<LI><A NAME="tex2html368"
220
+<LI><A NAME="tex2html367"
221 221
   HREF="node62.html">j-chkmail</A>
222
-<LI><A NAME="tex2html369"
222
+<LI><A NAME="tex2html368"
223 223
   HREF="node63.html">Mail Avenger</A>
224
-<LI><A NAME="tex2html370"
224
+<LI><A NAME="tex2html369"
225 225
   HREF="node64.html">Mailnees</A>
226
-<LI><A NAME="tex2html371"
226
+<LI><A NAME="tex2html370"
227 227
   HREF="node65.html">MailScanner</A>
228
-<LI><A NAME="tex2html372"
228
+<LI><A NAME="tex2html371"
229 229
   HREF="node66.html">Maverix</A>
230
-<LI><A NAME="tex2html373"
230
+<LI><A NAME="tex2html372"
231 231
   HREF="node67.html">MIMEDefang</A>
232
-<LI><A NAME="tex2html374"
232
+<LI><A NAME="tex2html373"
233 233
   HREF="node68.html">mxGuard for IMail</A>
234
-<LI><A NAME="tex2html375"
234
+<LI><A NAME="tex2html374"
235 235
   HREF="node69.html">OdeiaVir</A>
236
-<LI><A NAME="tex2html376"
236
+<LI><A NAME="tex2html375"
237 237
   HREF="node70.html">OpenProtect</A>
238
-<LI><A NAME="tex2html377"
238
+<LI><A NAME="tex2html376"
239 239
   HREF="node71.html">Protea AntiVirus Tools</A>
240
-<LI><A NAME="tex2html378"
240
+<LI><A NAME="tex2html377"
241 241
   HREF="node72.html">PTSMail Utilities</A>
242
-<LI><A NAME="tex2html379"
242
+<LI><A NAME="tex2html378"
243 243
   HREF="node73.html">pymavis</A>
244
-<LI><A NAME="tex2html380"
244
+<LI><A NAME="tex2html379"
245 245
   HREF="node74.html">Qmail-Scanner</A>
246
-<LI><A NAME="tex2html381"
246
+<LI><A NAME="tex2html380"
247 247
   HREF="node75.html">qpsmtp</A>
248
-<LI><A NAME="tex2html382"
248
+<LI><A NAME="tex2html381"
249 249
   HREF="node76.html">qscanq</A>
250
-<LI><A NAME="tex2html383"
250
+<LI><A NAME="tex2html382"
251 251
   HREF="node77.html">qSheff</A>
252
-<LI><A NAME="tex2html384"
252
+<LI><A NAME="tex2html383"
253 253
   HREF="node78.html">RevolSys SMTP kit for Postfix</A>
254
-<LI><A NAME="tex2html385"
254
+<LI><A NAME="tex2html384"
255 255
   HREF="node79.html">Sagator</A>
256
-<LI><A NAME="tex2html386"
256
+<LI><A NAME="tex2html385"
257 257
   HREF="node80.html">Scrubber</A>
258
-<LI><A NAME="tex2html387"
258
+<LI><A NAME="tex2html386"
259 259
   HREF="node81.html">Secure Mail Intelligence!</A>
260
-<LI><A NAME="tex2html388"
260
+<LI><A NAME="tex2html387"
261 261
   HREF="node82.html">simscan</A>
262
-<LI><A NAME="tex2html389"
262
+<LI><A NAME="tex2html388"
263 263
   HREF="node83.html">SmarterMail Filter</A>
264
-<LI><A NAME="tex2html390"
264
+<LI><A NAME="tex2html389"
265 265
   HREF="node84.html">smf-clamd</A>
266
-<LI><A NAME="tex2html391"
266
+<LI><A NAME="tex2html390"
267 267
   HREF="node85.html">smtpfilter</A>
268
-<LI><A NAME="tex2html392"
268
+<LI><A NAME="tex2html391"
269 269
   HREF="node86.html">smtp-vilter</A>
270
-<LI><A NAME="tex2html393"
270
+<LI><A NAME="tex2html392"
271 271
   HREF="node87.html">Zabit</A>
272 272
 </UL>
273
-<LI><A NAME="tex2html394"
273
+<LI><A NAME="tex2html393"
274 274
   HREF="node88.html"><I>MTA + POP3 Proxy + ClamAV</I></A>
275 275
 <UL>
276
-<LI><A NAME="tex2html395"
276
+<LI><A NAME="tex2html394"
277 277
   HREF="node89.html">ClamMail</A>
278
-<LI><A NAME="tex2html396"
278
+<LI><A NAME="tex2html395"
279 279
   HREF="node90.html">POP3 Virus Scanner Daemon</A>
280
-<LI><A NAME="tex2html397"
280
+<LI><A NAME="tex2html396"
281 281
   HREF="node91.html">pop3.proxy</A>
282 282
 </UL>
283
-<LI><A NAME="tex2html398"
283
+<LI><A NAME="tex2html397"
284 284
   HREF="node92.html"><I>Web/FTP Proxy + ClamAV</I></A>
285 285
 <UL>
286
-<LI><A NAME="tex2html399"
286
+<LI><A NAME="tex2html398"
287 287
   HREF="node93.html">DansGuardian Anti-Virus Patch</A>
288
-<LI><A NAME="tex2html400"
288
+<LI><A NAME="tex2html399"
289 289
   HREF="node94.html">Frox</A>
290
-<LI><A NAME="tex2html401"
290
+<LI><A NAME="tex2html400"
291 291
   HREF="node95.html">HTTP Anti Virus Proxy</A>
292
-<LI><A NAME="tex2html402"
292
+<LI><A NAME="tex2html401"
293 293
   HREF="node96.html">Frox</A>
294
-<LI><A NAME="tex2html403"
294
+<LI><A NAME="tex2html402"
295 295
   HREF="node97.html">mod_clamav</A>
296
-<LI><A NAME="tex2html404"
296
+<LI><A NAME="tex2html403"
297 297
   HREF="node98.html">SafeSquid</A>
298
-<LI><A NAME="tex2html405"
298
+<LI><A NAME="tex2html404"
299 299
   HREF="node99.html">SquidClamAV Redirector</A>
300
-<LI><A NAME="tex2html406"
300
+<LI><A NAME="tex2html405"
301 301
   HREF="node100.html">Squidclam</A>
302
-<LI><A NAME="tex2html407"
302
+<LI><A NAME="tex2html406"
303 303
   HREF="node101.html">Viralator</A>
304 304
 </UL>
305
-<LI><A NAME="tex2html408"
305
+<LI><A NAME="tex2html407"
306 306
   HREF="node102.html"><I>Filesystem + ClamAV</I></A>
307 307
 <UL>
308
-<LI><A NAME="tex2html409"
308
+<LI><A NAME="tex2html408"
309 309
   HREF="node103.html">Dazuko</A>
310
-<LI><A NAME="tex2html410"
310
+<LI><A NAME="tex2html409"
311 311
   HREF="node104.html">Famuko</A>
312
-<LI><A NAME="tex2html411"
312
+<LI><A NAME="tex2html410"
313 313
   HREF="node105.html">OpenAntiVirus samba-vscan</A>
314 314
 </UL>
315
-<LI><A NAME="tex2html412"
315
+<LI><A NAME="tex2html411"
316 316
   HREF="node106.html"><I>Mail User Agent + ClamAV</I></A>
317 317
 <UL>
318
-<LI><A NAME="tex2html413"
318
+<LI><A NAME="tex2html412"
319 319
   HREF="node107.html">clamailfilter</A>
320
-<LI><A NAME="tex2html414"
320
+<LI><A NAME="tex2html413"
321 321
   HREF="node108.html">ClamAssassin</A>
322
-<LI><A NAME="tex2html415"
322
+<LI><A NAME="tex2html414"
323 323
   HREF="node109.html">clamscan-procfilter</A>
324
-<LI><A NAME="tex2html416"
324
+<LI><A NAME="tex2html415"
325 325
   HREF="node110.html">KMail</A>
326
-<LI><A NAME="tex2html417"
326
+<LI><A NAME="tex2html416"
327 327
   HREF="node111.html">MyClamMailFilter</A>
328
-<LI><A NAME="tex2html418"
328
+<LI><A NAME="tex2html417"
329 329
   HREF="node112.html">OpenWebMail</A>
330
-<LI><A NAME="tex2html419"
330
+<LI><A NAME="tex2html418"
331 331
   HREF="node113.html">QClam</A>
332
-<LI><A NAME="tex2html420"
332
+<LI><A NAME="tex2html419"
333 333
   HREF="node114.html">QMVC - Qmail Mail and Virus Control</A>
334
-<LI><A NAME="tex2html421"
334
+<LI><A NAME="tex2html420"
335 335
   HREF="node115.html">Sylpheed Claws</A>
336
-<LI><A NAME="tex2html422"
336
+<LI><A NAME="tex2html421"
337 337
   HREF="node116.html">SoftlabsAV</A>
338 338
 </UL>
339
-<LI><A NAME="tex2html423"
339
+<LI><A NAME="tex2html422"
340 340
   HREF="node117.html"><I>Graphical User Interface + ClamAV</I></A>
341 341
 <UL>
342
-<LI><A NAME="tex2html424"
342
+<LI><A NAME="tex2html423"
343 343
   HREF="node118.html">AVScan</A>
344
-<LI><A NAME="tex2html425"
344
+<LI><A NAME="tex2html424"
345 345
   HREF="node119.html">BeClam</A>
346
-<LI><A NAME="tex2html426"
346
+<LI><A NAME="tex2html425"
347 347
   HREF="node120.html">Clamaktion</A>
348
-<LI><A NAME="tex2html427"
348
+<LI><A NAME="tex2html426"
349 349
   HREF="node121.html">ClamShell</A>
350
-<LI><A NAME="tex2html428"
350
+<LI><A NAME="tex2html427"
351 351
   HREF="node122.html">ClamTk</A>
352
-<LI><A NAME="tex2html429"
352
+<LI><A NAME="tex2html428"
353 353
   HREF="node123.html">clamXav</A>
354
-<LI><A NAME="tex2html430"
354
+<LI><A NAME="tex2html429"
355 355
   HREF="node124.html">ClamWin</A>
356
-<LI><A NAME="tex2html431"
356
+<LI><A NAME="tex2html430"
357 357
   HREF="node125.html">FETCAV</A>
358
-<LI><A NAME="tex2html432"
358
+<LI><A NAME="tex2html431"
359 359
   HREF="node126.html">KlamAV</A>
360
-<LI><A NAME="tex2html433"
360
+<LI><A NAME="tex2html432"
361 361
   HREF="node127.html">QtClamAVclient</A>
362
-<LI><A NAME="tex2html434"
362
+<LI><A NAME="tex2html433"
363 363
   HREF="node128.html">wbmclamav</A>
364 364
 </UL>
365
-<LI><A NAME="tex2html435"
365
+<LI><A NAME="tex2html434"
366 366
   HREF="node129.html"><I>Library + ClamAV</I></A>
367 367
 <UL>
368
-<LI><A NAME="tex2html436"
368
+<LI><A NAME="tex2html435"
369 369
   HREF="node130.html">ClamAVPlugin</A>
370
-<LI><A NAME="tex2html437"
370
+<LI><A NAME="tex2html436"
371 371
   HREF="node131.html">clamavr</A>
372
-<LI><A NAME="tex2html438"
372
+<LI><A NAME="tex2html437"
373 373
   HREF="node132.html">D bindings for ClamAV</A>
374
-<LI><A NAME="tex2html439"
374
+<LI><A NAME="tex2html438"
375 375
   HREF="node133.html">File::Scan::ClamAV</A>
376
-<LI><A NAME="tex2html440"
376
+<LI><A NAME="tex2html439"
377 377
   HREF="node134.html">Mail::ClamAV</A>
378
-<LI><A NAME="tex2html441"
378
+<LI><A NAME="tex2html440"
379 379
   HREF="node135.html">php-clamav</A>
380
-<LI><A NAME="tex2html442"
380
+<LI><A NAME="tex2html441"
381 381
   HREF="node136.html">pyclamav</A>
382
-<LI><A NAME="tex2html443"
382
+<LI><A NAME="tex2html442"
383 383
   HREF="node137.html">WRAVLib</A>
384 384
 </UL>
385
-<LI><A NAME="tex2html444"
385
+<LI><A NAME="tex2html443"
386 386
   HREF="node138.html"><I>Miscellaneous + ClamAV</I></A>
387 387
 <UL>
388
-<LI><A NAME="tex2html445"
388
+<LI><A NAME="tex2html444"
389 389
   HREF="node139.html">INSERT</A>
390
-<LI><A NAME="tex2html446"
390
+<LI><A NAME="tex2html445"
391 391
   HREF="node140.html">Local Area Security</A>
392
-<LI><A NAME="tex2html447"
392
+<LI><A NAME="tex2html446"
393 393
   HREF="node141.html">mailgraph</A>
394
-<LI><A NAME="tex2html448"
394
+<LI><A NAME="tex2html447"
395 395
   HREF="node142.html">mailman-clamav</A>
396
-<LI><A NAME="tex2html449"
396
+<LI><A NAME="tex2html448"
397 397
   HREF="node143.html">Moodle</A>
398
-<LI><A NAME="tex2html450"
398
+<LI><A NAME="tex2html449"
399 399
   HREF="node144.html">nclamd</A>
400
-<LI><A NAME="tex2html451"
400
+<LI><A NAME="tex2html450"
401 401
   HREF="node145.html">qmailmrtg7</A>
402
-<LI><A NAME="tex2html452"
402
+<LI><A NAME="tex2html451"
403 403
   HREF="node146.html">redWall Firewall</A>
404
-<LI><A NAME="tex2html453"
404
+<LI><A NAME="tex2html452"
405 405
   HREF="node147.html">Scan Log Analyzer</A>
406
-<LI><A NAME="tex2html454"
406
+<LI><A NAME="tex2html453"
407 407
   HREF="node148.html">snort-inline</A>
408 408
 </UL>
409 409
 </UL>
410
-<LI><A NAME="tex2html455"
410
+<LI><A NAME="tex2html454"
411 411
   HREF="node149.html">Credits</A>
412 412
 <UL>
413
-<LI><A NAME="tex2html456"
413
+<LI><A NAME="tex2html455"
414 414
   HREF="node150.html">Database mirrors</A>
415
-<LI><A NAME="tex2html457"
415
+<LI><A NAME="tex2html456"
416 416
   HREF="node151.html">Contributors</A>
417
-<LI><A NAME="tex2html458"
417
+<LI><A NAME="tex2html457"
418 418
   HREF="node152.html">Donors</A>
419
-<LI><A NAME="tex2html459"
419
+<LI><A NAME="tex2html458"
420 420
   HREF="node153.html">Graphics</A>
421
-<LI><A NAME="tex2html460"
421
+<LI><A NAME="tex2html459"
422 422
   HREF="node154.html">OpenAntiVirus</A>
423 423
 </UL>
424
-<LI><A NAME="tex2html461"
424
+<LI><A NAME="tex2html460"
425 425
   HREF="node155.html">Authors</A>
426
-<LI><A NAME="tex2html462"
426
+<LI><A NAME="tex2html461"
427 427
   HREF="node156.html">About this document ...</A>
428 428
 </UL>
429 429
 <!--End of Table of Child-Links-->
430 430
 <BR><HR>
431 431
 <ADDRESS>
432 432
 Tomasz Kojm
433
-2005-04-29
433
+2005-05-11
434 434
 </ADDRESS>
435 435
 </BODY>
436 436
 </HTML>
... ...
@@ -24,18 +24,18 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
24 24
 
25 25
 <BODY >
26 26
 <!--Navigation Panel-->
27
-<A NAME="tex2html305"
27
+<A NAME="tex2html304"
28 28
   HREF="node1.html">
29 29
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
30 30
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png"> 
31 31
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png"> 
32
-<A NAME="tex2html303"
32
+<A NAME="tex2html302"
33 33
   HREF="node1.html">
34 34
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>  
35 35
 <BR>
36
-<B> Next:</B> <A NAME="tex2html306"
36
+<B> Next:</B> <A NAME="tex2html305"
37 37
   HREF="node1.html">Contents</A>
38
- &nbsp <B>  <A NAME="tex2html304"
38
+ &nbsp <B>  <A NAME="tex2html303"
39 39
   HREF="node1.html">Contents</A></B> 
40 40
 <BR>
41 41
 <BR>
... ...
@@ -59,7 +59,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
59 59
 <BR>
60 60
 <BR>
61 61
     <DIV ALIGN="RIGHT">
62
-<BR>	<FONT SIZE="+3">Clam AntiVirus 0.84
62
+<BR>	<FONT SIZE="+3">Clam AntiVirus 0.85
63 63
 <BR>	<FONT SIZE="+3"><I>User Manual</I>
64 64
 <BR>    
65 65
 </FONT></FONT></DIV>
... ...
@@ -71,366 +71,366 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
71 71
 <A NAME="CHILD_LINKS"></A>
72 72
 
73 73
 <UL>
74
-<LI><A NAME="tex2html307"
74
+<LI><A NAME="tex2html306"
75 75
   HREF="node1.html">Contents</A>
76
-<LI><A NAME="tex2html308"
76
+<LI><A NAME="tex2html307"
77 77
   HREF="node2.html">Introduction</A>
78 78
 <UL>
79
-<LI><A NAME="tex2html309"
79
+<LI><A NAME="tex2html308"
80 80
   HREF="node3.html">Features</A>
81
-<LI><A NAME="tex2html310"
81
+<LI><A NAME="tex2html309"
82 82
   HREF="node4.html">Mailing lists</A>
83
-<LI><A NAME="tex2html311"
83
+<LI><A NAME="tex2html310"
84 84
   HREF="node5.html">Virus submitting</A>
85 85
 </UL>
86
-<LI><A NAME="tex2html312"
86
+<LI><A NAME="tex2html311"
87 87
   HREF="node6.html">Base package</A>
88 88
 <UL>
89
-<LI><A NAME="tex2html313"
89
+<LI><A NAME="tex2html312"
90 90
   HREF="node7.html">Supported platforms</A>
91
-<LI><A NAME="tex2html314"
91
+<LI><A NAME="tex2html313"
92 92
   HREF="node8.html">Binary packages</A>
93
-<LI><A NAME="tex2html315"
93
+<LI><A NAME="tex2html314"
94 94
   HREF="node9.html">Daily built snapshots</A>
95 95
 </UL>
96
-<LI><A NAME="tex2html316"
96
+<LI><A NAME="tex2html315"
97 97
   HREF="node10.html">Installation</A>
98 98
 <UL>
99
-<LI><A NAME="tex2html317"
99
+<LI><A NAME="tex2html316"
100 100
   HREF="node11.html">Requirements</A>
101
-<LI><A NAME="tex2html318"
101
+<LI><A NAME="tex2html317"
102 102
   HREF="node12.html">Installing on a shell account</A>
103
-<LI><A NAME="tex2html319"
103
+<LI><A NAME="tex2html318"
104 104
   HREF="node13.html">Adding new system user and group</A>
105
-<LI><A NAME="tex2html320"
105
+<LI><A NAME="tex2html319"
106 106
   HREF="node14.html">Compilation of base package</A>
107
-<LI><A NAME="tex2html321"
107
+<LI><A NAME="tex2html320"
108 108
   HREF="node15.html">Compilation with clamav-milter enabled</A>
109 109
 </UL>
110
-<LI><A NAME="tex2html322"
110
+<LI><A NAME="tex2html321"
111 111
   HREF="node16.html">Configuration</A>
112 112
 <UL>
113
-<LI><A NAME="tex2html323"
113
+<LI><A NAME="tex2html322"
114 114
   HREF="node17.html">clamd</A>
115 115
 <UL>
116
-<LI><A NAME="tex2html324"
116
+<LI><A NAME="tex2html323"
117 117
   HREF="node18.html">On-access scanning</A>
118 118
 </UL>
119
-<LI><A NAME="tex2html325"
119
+<LI><A NAME="tex2html324"
120 120
   HREF="node19.html">clamav-milter</A>
121
-<LI><A NAME="tex2html326"
121
+<LI><A NAME="tex2html325"
122 122
   HREF="node20.html">Testing</A>
123
-<LI><A NAME="tex2html327"
123
+<LI><A NAME="tex2html326"
124 124
   HREF="node21.html">Setting up auto-updating</A>
125
-<LI><A NAME="tex2html328"
125
+<LI><A NAME="tex2html327"
126 126
   HREF="node22.html">Closest mirrors</A>
127 127
 </UL>
128
-<LI><A NAME="tex2html329"
128
+<LI><A NAME="tex2html328"
129 129
   HREF="node23.html">Usage</A>
130 130
 <UL>
131
-<LI><A NAME="tex2html330"
131
+<LI><A NAME="tex2html329"
132 132
   HREF="node24.html">Clam daemon</A>
133
-<LI><A NAME="tex2html331"
133
+<LI><A NAME="tex2html330"
134 134
   HREF="node25.html">Clam<B>d</B>scan</A>
135
-<LI><A NAME="tex2html332"
135
+<LI><A NAME="tex2html331"
136 136
   HREF="node26.html">Clamuko</A>
137
-<LI><A NAME="tex2html333"
137
+<LI><A NAME="tex2html332"
138 138
   HREF="node27.html">Output format</A>
139 139
 <UL>
140
-<LI><A NAME="tex2html334"
140
+<LI><A NAME="tex2html333"
141 141
   HREF="node28.html">clamscan</A>
142
-<LI><A NAME="tex2html335"
142
+<LI><A NAME="tex2html334"
143 143
   HREF="node29.html">clamd</A>
144 144
 </UL>
145 145
 </UL>
146
-<LI><A NAME="tex2html336"
146
+<LI><A NAME="tex2html335"
147 147
   HREF="node30.html">LibClamAV</A>
148 148
 <UL>
149
-<LI><A NAME="tex2html337"
149
+<LI><A NAME="tex2html336"
150 150
   HREF="node31.html">Licence</A>
151
-<LI><A NAME="tex2html338"
151
+<LI><A NAME="tex2html337"
152 152
   HREF="node32.html">Features</A>
153 153
 <UL>
154
-<LI><A NAME="tex2html339"
154
+<LI><A NAME="tex2html338"
155 155
   HREF="node33.html">Archives and compressed files</A>
156
-<LI><A NAME="tex2html340"
156
+<LI><A NAME="tex2html339"
157 157
   HREF="node34.html">Mail files</A>
158 158
 </UL>
159
-<LI><A NAME="tex2html341"
159
+<LI><A NAME="tex2html340"
160 160
   HREF="node35.html">API</A>
161 161
 <UL>
162
-<LI><A NAME="tex2html342"
162
+<LI><A NAME="tex2html341"
163 163
   HREF="node36.html">Header file</A>
164
-<LI><A NAME="tex2html343"
164
+<LI><A NAME="tex2html342"
165 165
   HREF="node37.html">Database loading</A>
166
-<LI><A NAME="tex2html344"
166
+<LI><A NAME="tex2html343"
167 167
   HREF="node38.html">Error handling</A>
168
-<LI><A NAME="tex2html345"
168
+<LI><A NAME="tex2html344"
169 169
   HREF="node39.html">Database structure</A>
170 170
 </UL>
171
-<LI><A NAME="tex2html346"
171
+<LI><A NAME="tex2html345"
172 172
   HREF="node40.html">Database reloading</A>
173 173
 <UL>
174
-<LI><A NAME="tex2html347"
174
+<LI><A NAME="tex2html346"
175 175
   HREF="node41.html">Data scan functions</A>
176
-<LI><A NAME="tex2html348"
176
+<LI><A NAME="tex2html347"
177 177
   HREF="node42.html">Memory</A>
178
-<LI><A NAME="tex2html349"
178
+<LI><A NAME="tex2html348"
179 179
   HREF="node43.html">clamav-config</A>
180
-<LI><A NAME="tex2html350"
180
+<LI><A NAME="tex2html349"
181 181
   HREF="node44.html">Example</A>
182 182
 </UL>
183
-<LI><A NAME="tex2html351"
183
+<LI><A NAME="tex2html350"
184 184
   HREF="node45.html">CVD format</A>
185 185
 </UL>
186
-<LI><A NAME="tex2html352"
186
+<LI><A NAME="tex2html351"
187 187
   HREF="node46.html">Frequently Asked Questions</A>
188
-<LI><A NAME="tex2html353"
188
+<LI><A NAME="tex2html352"
189 189
   HREF="node47.html">Third party software</A>
190 190
 <UL>
191
-<LI><A NAME="tex2html354"
191
+<LI><A NAME="tex2html353"
192 192
   HREF="node48.html"><I>MTA + ClamAV</I></A>
193 193
 <UL>
194
-<LI><A NAME="tex2html355"
194
+<LI><A NAME="tex2html354"
195 195
   HREF="node49.html">amavisd-new</A>
196
-<LI><A NAME="tex2html356"
196
+<LI><A NAME="tex2html355"
197 197
   HREF="node50.html">AMaViS - "Next Generation"</A>
198
-<LI><A NAME="tex2html357"
198
+<LI><A NAME="tex2html356"
199 199
   HREF="node51.html">ClamdMail</A>
200
-<LI><A NAME="tex2html358"
200
+<LI><A NAME="tex2html357"
201 201
   HREF="node52.html">cgpav</A>
202
-<LI><A NAME="tex2html359"
202
+<LI><A NAME="tex2html358"
203 203
   HREF="node53.html">ClamCour</A>
204
-<LI><A NAME="tex2html360"