samba-vscan/clamav vscan-clamav.c,1.1.2.12,1.1.2.13 vscan-clamav.h,1.1.2.6,1.1.2.7

Rainer Link <[email protected]> Wed, 29 Sep 2004 13:59:05 +0000
Newsgroups gmane.comp.security.virus.openantivirus.cvs
Message-ID <[email protected]>
Update of /cvsroot/openantivirus/samba-vscan/clamav
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5117/clamav

Modified Files:
      Tag: VSCAN_0_3
	vscan-clamav.c vscan-clamav.h 
Log Message:
updated to use the new global configuration parsing module


Index: vscan-clamav.h
===================================================================
RCS file: /cvsroot/openantivirus/samba-vscan/clamav/vscan-clamav.h,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -d -r1.1.2.6 -r1.1.2.7
--- vscan-clamav.h	9 Sep 2004 13:01:30 -0000	1.1.2.6
+++ vscan-clamav.h	29 Sep 2004 13:59:02 -0000	1.1.2.7
@@ -6,7 +6,12 @@
 
 /* Configuration Section :-) */
 
-/* Clam AntiVirus (clamd) stuff: 
+/* default location of samba-style configuration file (needs Samba >= 2.2.4
+ or Samba 3.0 */
+
+#define PARAMCONF "/etc/samba/vscan-clamav.conf"
+
+/* Clam AntiVirus (clamd) stuff:
    socket name of Clam daemon */
 #define VSCAN_CLAMD_SOCKET_NAME      "/var/run/clamd"
 
@@ -18,72 +23,6 @@
 /* maximum recursion level */
 #define VSCAN_CL_MAXRECLEVEL 5
 
-/* default location of samba-style configuration file (needs Samba >= 2.2.4
- or Samba 3.0 */
-
-#define PARAMCONF "/etc/samba/vscan-clamav.conf"
-
-
-/* False = log only infected file, True = log every file access */
-
-#ifndef VSCAN_VERBOSE_FILE_LOGGING
-# define VSCAN_VERBOSE_FILE_LOGGING False   
-#endif
-
-/* if a file is bigger than VSCAN_MAX_SIZE it won't be scanned. Has to be
-   specified in bytes! If it set to 0, the file size check is disabled */
-
-#ifndef VSCAN_MAX_SIZE 
-# define VSCAN_MAX_SIZE 0 
-#endif
-
-/* True = scan files on open */
-
-#ifndef VSCAN_SCAN_ON_OPEN 
-# define VSCAN_SCAN_ON_OPEN True 
-#endif
-
-/* True = scan files on close */
-
-#ifndef VSCAN_SCAN_ON_CLOSE
-# define VSCAN_SCAN_ON_CLOSE False
-#endif
-
-/* True = deny access in case of virus scanning failure */
-
-#ifndef VSCAN_DENY_ACCESS_ON_ERROR
-# define VSCAN_DENY_ACCESS_ON_ERROR True
-#endif
-
-/* True = deny access in case of minor virus scanning failure */
-
-#ifndef VSCAN_DENY_ACCESS_ON_MINOR_ERROR
-# define VSCAN_DENY_ACCESS_ON_MINOR_ERROR True
-#endif
-
-/* True = send a warning message via window messenger service for viruses found */
-
-#ifndef VSCAN_SEND_WARNING_MESSAGE
-# define VSCAN_SEND_WARNING_MESSAGE True
-#endif
-
-/* default infected file action */
-#define VSCAN_INFECTED_FILE_ACTION INFECTED_QUARANTINE
-
-/* default quarantine settings; hopefully the user changes this */
-#define VSCAN_QUARANTINE_DIRECTORY "/tmp"
-#define VSCAN_QUARANTINE_PREFIX    "vir-"
-
-/* set default value for maximum lrufile entries */
-#define VSCAN_MAX_LRUFILES 100
-
-/* time after an entry is considered as expired */
-#define VSCAN_LRUFILES_INVALIDATE_TIME 5
-
-/* MIME-types of files to be exluded from scanning; that's an
-   semi-colon seperated list */
-#define VSCAN_FT_EXCLUDE_LIST ""
-
 
 /* End Configuration Section */
 

Index: vscan-clamav.c
===================================================================
RCS file: /cvsroot/openantivirus/samba-vscan/clamav/vscan-clamav.c,v
retrieving revision 1.1.2.12
retrieving revision 1.1.2.13
diff -u -d -r1.1.2.12 -r1.1.2.13
--- vscan-clamav.c	24 Sep 2004 21:45:08 -0000	1.1.2.12
+++ vscan-clamav.c	29 Sep 2004 13:59:02 -0000	1.1.2.13
@@ -48,54 +48,18 @@
 
 #define VSCAN_MODULE_STR "vscan-clamav"
 
-fstring config_file;            /* location of config file, either
-                                   PARAMCONF or as set via vfs options
-                                */
-
-ssize_t max_size;          	/* do not scan files greater than max_size
-                                   if max_size = 0, scan any file
-                                */
-
-BOOL verbose_file_logging;  	/* log ever file access */
-
-BOOL scan_on_open;         	/* scan a file before it is opened
-                                   Defaults to True
-                                */
-
-BOOL scan_on_close;        	/* scan a new file put on share or
-                                   if file was modified
-                                   Defaults to False
-                                */
-
-BOOL deny_access_on_error;	/* if using SAVI fails, should access to any
-				   file be denied? */
-
-BOOL deny_access_on_minor_error; /* if daemon returns non-critical error,
-                                    should access to the file be denied? */
-
-BOOL send_warning_message;	/* send a warning message using the windows
-				   messenger service? */
-
-
-fstring	clamd_socket_name;	/* name of clamd socket */
-
-fstring quarantine_dir;	/* directory for infected files */
-fstring quarantine_prefix;	/* prefix    for infected files */
-
-enum infected_file_action_enum infected_file_action; /* what to do with infected files;
-                                                        defaults to quarantine */
-
-int max_lrufiles;               /* specified the maximum entries in lrufiles list */
-time_t lrufiles_invalidate_time; /* specified the time in seconds after the lifetime
-                                    of an entry is expired and entry will be invalidated */
+vscan_config_struct vscan_config; /* contains the vscan module configuration */
 
-pstring exclude_file_types;	/* list of file types which should be excluded from scanning */
+BOOL verbose_file_logging;
+BOOL send_warning_message;
 
 #ifdef LIBCLAMAV
 struct cl_node *clamav_root = NULL;
 struct cl_limits clamav_limits;
 BOOL clamav_loaded = False;
-#endif 
+#else
+fstring clamd_socket_name;      /* name of clamd socket */
+#endif  
 
 /* module version */
 static const char module_id[]=VSCAN_MODULE_STR" "SAMBA_VSCAN_VERSION_STR;
@@ -104,79 +68,34 @@
 
 static BOOL do_parameter(const char *param, const char *value)
 {
-	if ( StrCaseCmp("max file size", param) == 0 ) {
-		max_size = atoi(value);
-		DEBUG(3, ("max file size is: %d\n", max_size));
-	} else if ( StrCaseCmp("verbose file logging", param) == 0 ) {
-		set_boolean(&verbose_file_logging, value);
-		DEBUG(3, ("verbose file logging is: %d\n", verbose_file_logging));	
-	} else if ( StrCaseCmp("scan on open", param) == 0 ) {
-		set_boolean(&scan_on_open, value);
-		DEBUG(3, ("scan on open: %d\n", scan_on_open));
-	} else if ( StrCaseCmp("scan on close", param) == 0 ) {
-		set_boolean(&scan_on_close, value);
-		DEBUG(3, ("scan on close is: %d\n", scan_on_close));
-	} else if ( StrCaseCmp("deny access on error", param) == 0 ) {
-		set_boolean(&deny_access_on_error, value);
-		DEBUG(3, ("deny access on error is: %d\n", deny_access_on_error));
-	} else if ( StrCaseCmp("deny access on minor error", param) == 0 ) {
-		set_boolean(&deny_access_on_minor_error, value);
-		DEBUG(3, ("deny access on minor error is: %d\n", deny_access_on_minor_error));
-	} else if ( StrCaseCmp("send warning message", param) == 0 ) {
-		set_boolean(&send_warning_message, value);
-		DEBUG(3, ("send warning message is: %d\n", send_warning_message));
 
-        } else if ( StrCaseCmp("infected file action", param) == 0 ) {
-		if (StrCaseCmp("quarantine", value) == 0) {
-			infected_file_action = INFECTED_QUARANTINE;
-		} else if (StrCaseCmp("delete", value) == 0) {
-			infected_file_action = INFECTED_DELETE;
-		} else if (StrCaseCmp("nothing", value) == 0) {
-			infected_file_action = INFECTED_DO_NOTHING;
-		} else {
-			DEBUG(2, ("samba-vscan: badly formed infected file action in configuration file, parameter %s\n", value));
-		}
-                DEBUG(3, ("infected file action is: %d\n", infected_file_action));
-        } else if ( StrCaseCmp("quarantine directory", param) == 0 ) {
-                fstrcpy(quarantine_dir, value);
-                DEBUG(3, ("quarantine directory is: %s\n", quarantine_dir));
-        } else if ( StrCaseCmp("quarantine prefix", param) == 0 ) {
-                fstrcpy(quarantine_prefix, value);
-                DEBUG(3, ("quarantine prefix is: %s\n", quarantine_prefix));
-        } else if ( StrCaseCmp("max lru files entries", param) == 0 ) {
-                max_lrufiles = atoi(value);
-                DEBUG(3, ("max lru files entries is: %d\n", max_lrufiles));
-        } else if ( StrCaseCmp("lru file entry lifetime", param) == 0 ) {
-                lrufiles_invalidate_time = atol(value);
-                DEBUG(3, ("lru file entry lifetime is: %li\n", (long)lrufiles_invalidate_time));
-	} else if ( StrCaseCmp("clamd socket name", param) == 0) {
+        if ( do_common_parameter(&vscan_config, param, value) == False ) {
+                /* parse VFS module specific configuration values */
+		if ( StrCaseCmp("clamd socket name", param) == 0) {
 #ifdef LIBCLAMAV
-		DEBUG(3, ("clamd socket name not supported when linked against lib clamav\n"));
+			DEBUG(3, ("clamd socket name not supported when linked against lib clamav\n"));
 #else
-		fstrcpy(clamd_socket_name, value);
-		DEBUG(3, ("clamd socket name is %s\n", clamd_socket_name));
+			fstrcpy(clamd_socket_name, value);
+			DEBUG(3, ("clamd socket name is %s\n", clamd_socket_name));
 #endif
-	} else if ( StrCaseCmp("exclude file types", param) == 0 ) {
-		pstrcpy(exclude_file_types, value);
-		DEBUG(3, ("exclude file types is: %s\n", exclude_file_types));
 
 #ifdef LIBCLAMAV
-	} else if ( StrCaseCmp("libclamav max files in archive", param) == 0 ) {
-		/* sanity check? */
-		clamav_limits.maxfiles = atoi(value);
-		DEBUG(3, ("libclamav maxfiles limit is: %i\n", clamav_limits.maxfiles));
-	} else if ( StrCaseCmp("libclamav max archived file size", param) == 0) {
-		/* sanity check? */
-		clamav_limits.maxfilesize = atol(value);
-		DEBUG(3, ("libclamav max archived files limit is: %li\n", clamav_limits.maxfilesize));
-	} else if ( StrCaseCmp("libclamav max recursion level", param) == 0 ) {
-		/* sanity check? */
-		clamav_limits.maxreclevel = atoi(value);
-		DEBUG(3, ("libclamav max recursion level limit is: %i\n", clamav_limits.maxreclevel));
-			
+		} else if ( StrCaseCmp("libclamav max files in archive", param) == 0 ) {
+			/* sanity check? */
+			clamav_limits.maxfiles = atoi(value);
+			DEBUG(3, ("libclamav maxfiles limit is: %i\n", clamav_limits.maxfiles));
+		} else if ( StrCaseCmp("libclamav max archived file size", param) == 0) {
+			/* sanity check? */
+			clamav_limits.maxfilesize = atol(value);
+			DEBUG(3, ("libclamav max archived files limit is: %li\n", clamav_limits.maxfilesize));
+		} else if ( StrCaseCmp("libclamav max recursion level", param) == 0 ) {
+			/* sanity check? */
+			clamav_limits.maxreclevel = atoi(value);
+			DEBUG(3, ("libclamav max recursion level limit is: %i\n", clamav_limits.maxreclevel));
 #endif
-	} else
-                DEBUG(3, ("unknown parameter: %s\n", param));
+		} else
+        	        DEBUG(3, ("unknown parameter: %s\n", param));
+	}
 
         return True;
 }
@@ -198,6 +117,10 @@
 static int vscan_connect(struct connection_struct *conn, PROTOTYPE_CONST char *svc, PROTOTYPE_CONST char *user)
 #endif
 {
+        fstring config_file;            /* location of config file, either
+                                           PARAMCONF or as set via vfs options
+                                        */
+
 	#if (SAMBA_VERSION_MAJOR==2 && SAMBA_VERSION_RELEASE>=4) || SAMBA_VERSION_MAJOR==3
 	 #if !(SMB_VFS_INTERFACE_VERSION >= 6)
           pstring opts_str;
@@ -213,38 +136,8 @@
 	/* set default value for configuration files */
 	fstrcpy(config_file, PARAMCONF);
 
-	/* set default value for max file size */
-	max_size = VSCAN_MAX_SIZE;
-
-	/* set default value for file logging */
-	verbose_file_logging = VSCAN_VERBOSE_FILE_LOGGING;
-
-	/* set default value for scan on open() */
-	scan_on_open = VSCAN_SCAN_ON_OPEN;
-
-	/* set default value for scan on close() */
-	scan_on_close = VSCAN_SCAN_ON_CLOSE;
-
-	/* set default value for deny access on error */
-	deny_access_on_error = VSCAN_DENY_ACCESS_ON_ERROR;
-
-	/* set default value for deny access on minor error */
-	deny_access_on_minor_error = VSCAN_DENY_ACCESS_ON_MINOR_ERROR;
- 
-	/* set default value for send warning message */
-	send_warning_message = VSCAN_SEND_WARNING_MESSAGE;
-
-	/* name of clamd socket */
-	fstrcpy(clamd_socket_name, VSCAN_CLAMD_SOCKET_NAME);
-
-        /* set default value for maximum lrufile entries */
-        max_lrufiles = VSCAN_MAX_LRUFILES;
-
-        /* time after an entry is considered as expired */
-        lrufiles_invalidate_time = VSCAN_LRUFILES_INVALIDATE_TIME;
-
-	/* file type exclude ist */
-	pstrcpy(exclude_file_types, VSCAN_FT_EXCLUDE_LIST);	
+       /* set default values */
+        set_common_default_settings(&vscan_config);
 
 #ifdef LIBCLAMAV
 	memset(&clamav_limits, 0, sizeof(struct cl_limits));
@@ -252,42 +145,26 @@
 	clamav_limits.maxfiles = VSCAN_CL_MAXFILES;
 	clamav_limits.maxfilesize = VSCAN_CL_MAXFILESIZE;
 	clamav_limits.maxreclevel = VSCAN_CL_MAXRECLEVEL;
- #endif
+#else
+        /* name of clamd socket */
+        fstrcpy(clamd_socket_name, VSCAN_CLAMD_SOCKET_NAME);
+#endif
 
 	vscan_syslog("INFO: connect to service %s by user %s", 
 	       svc, user);
 
 	#if (SAMBA_VERSION_MAJOR==2 && SAMBA_VERSION_RELEASE>=4) || SAMBA_VERSION_MAJOR==3
-	 #if (SMB_VFS_INTERFACE_VERSION >= 6)
-	  fstrcpy(config_file, lp_parm_const_string(SNUM(conn),VSCAN_MODULE_STR,"config-file",PARAMCONF));
-	 #else
-          pstrcpy(opts_str, (const char*) lp_vfs_options(SNUM(conn)));
-          if( !*opts_str ) {
-                DEBUG(3, ("samba-vscan: no configuration file set - using default value (%s).\n", lp_vfs_options(SNUM(conn))));
-          } else {
-                p = opts_str;
-                if ( next_token(&p, config_file, "=", sizeof(config_file)) ) {
-                        trim_string(config_file, " ", " ");
-                        if ( !strequal("config-file", config_file) ) {
-                                DEBUG(3, ("samba-vscan - connect: options %s is not config-file\n", config_file));
-                                /* setting default value */
-                                fstrcpy(config_file, PARAMCONF);
 
-                        } else {
-                                if ( !next_token(&p, config_file," \n",sizeof(config_file)) ) {
-                                        DEBUG(3, ("samba-vscan - connect: no option after config-file=\n"));
-                                        /* setting default value */
-                                        fstrcpy(config_file, PARAMCONF);
-                                } else {
-                                        trim_string(config_file, " ", " ");
-                                        DEBUG(3, ("samba-vscan - connect: config file name is %s\n", config_file));
-                                }
-                        }
-                }
-          }
-	  #endif /*  #if (SMB_VFS_INTERFACE_VERSION >= 6)*/
+          fstrcpy(config_file, get_configuration_file(conn, VSCAN_MODULE_STR, PARAMCONF));
+          DEBUG(0, ("configuration file is: %s\n", config_file));
+
           retval = pm_process(config_file, do_section, do_parameter);
           DEBUG(10, ("pm_process returned %d\n", retval));
+
+          /* FIXME: this is lame! */
+          verbose_file_logging = vscan_config.common.verbose_file_logging;
+          send_warning_message = vscan_config.common.send_warning_message;
+
 	  if (!retval) vscan_syslog("ERROR: could not parse configuration file '%s'. File not found or not read-able. Using compiled-in defaults", config_file);
 	#endif
 
@@ -298,11 +175,11 @@
 
         /* initialise lrufiles list */
         DEBUG(5, ("init lrufiles list\n"));
-        lrufiles_init(max_lrufiles, lrufiles_invalidate_time);
+        lrufiles_init(vscan_config.common.max_lrufiles, vscan_config.common.lrufiles_invalidate_time);
 
 	/* initialise filetype */
 	DEBUG(5, ("init file type\n"));
-	filetype_init(0, exclude_file_types);
+	filetype_init(0, vscan_config.common.exclude_file_types);
 
 
 	#if (SMB_VFS_INTERFACE_VERSION >= 6)
@@ -353,7 +230,7 @@
 
 
         /* scan files while opening? */
-        if ( !scan_on_open ) {
+        if ( !vscan_config.common.scan_on_open ) {
                 DEBUG(3, ("samba-vscan - open: File '%s' not scanned as scan_on_open is not set\n", fname));
         }
 #if (SMB_VFS_INTERFACE_VERSION >= 6)
@@ -373,12 +250,12 @@
 		if ( verbose_file_logging )
 			vscan_syslog("INFO: File %s is a directory! Not scanned!", fname);
 	}
-	else if ( ( stat_buf.st_size > max_size ) && ( max_size > 0 ) ) { /* file is too large */
-		if ( verbose_file_logging )
+	else if ( ( stat_buf.st_size > vscan_config.common.max_size ) && ( vscan_config.common.max_size > 0 ) ) { /* file is too large */
+		if ( vscan_config.common.verbose_file_logging )
 			vscan_syslog("INFO: File %s is larger than specified maximum file size! Not scanned!", fname);
 	}
 	else if ( stat_buf.st_size == 0 ) { /* do not scan empty files */
-		if ( verbose_file_logging )
+		if ( vscan_config.common.verbose_file_logging )
 			vscan_syslog("INFO: File %s has size zero! Not scanned!", fname);
 	}
 	else if ( filetype_skipscan(filepath) == VSCAN_FT_SKIP_SCAN ) {
@@ -395,7 +272,7 @@
                 if ( must_be_checked == VSCAN_LRU_DENY_ACCESS ) {
                         /* file has already been checked and marked as infected */
                         /* deny access */
-                        if ( verbose_file_logging )
+                        if ( vscan_config.common.verbose_file_logging )
                                 vscan_syslog("File '%s' has already been scanned and marked as infected. Not scanned any more. Access denied", filepath);
 
 			/* deny access */
@@ -403,7 +280,7 @@
                         return -1;
                 } else if ( must_be_checked == VSCAN_LRU_GRANT_ACCESS )  {
                         /* file has already been checked, not marked as infected and not modified */
-                        if ( verbose_file_logging )
+                        if ( vscan_config.common.verbose_file_logging )
                                 vscan_syslog("File '%s' has already been scanned, not marked as infected and not modified. Not scanned anymore. Access granted", filepath);
                 }
 		else {
@@ -418,7 +295,7 @@
 			/* open socket */
 			sockfd = vscan_clamav_init();
 	                if ( sockfd == VSCAN_SCAN_ERROR ) {
-				if( deny_access_on_error ) {
+				if( vscan_config.common.deny_access_on_error ) {
 		                        /* an error occured - can not communicate to daemon - deny access */
 					vscan_syslog("ERROR: can not communicate to daemon - access denied");
 					errno = EACCES;
@@ -432,7 +309,7 @@
 				retval = vscan_clamav_scanfile(sockfd, filepath, client_ip);
 				vscan_clamav_end(sockfd);
 			}
-#endif
+#endif 
 			if ( retval == VSCAN_SCAN_OK ) {
                                 /* file is clean, add to lrufiles */
                                 lrufiles_add(filepath, stat_buf.st_mtime, False);
@@ -441,9 +318,9 @@
 				/* virus found */
 				/* do action ... */
 #if (SMB_VFS_INTERFACE_VERSION >= 6)
-				vscan_do_infected_file_action(handle, conn, filepath, quarantine_dir, quarantine_prefix, infected_file_action);
+				vscan_do_infected_file_action(handle, conn, filepath, vscan_config.common.quarantine_dir, vscan_config.common.quarantine_prefix, vscan_config.common.infected_file_action);
 #else
-				vscan_do_infected_file_action(&default_vfs_ops, conn, filepath, quarantine_dir, quarantine_prefix, infected_file_action);
+				vscan_do_infected_file_action(&default_vfs_ops, conn, filepath, vscan_config.common.quarantine_dir, vscan_config.common.quarantine_prefix, vscan_config.common.infected_file_action);
 #endif
 
                                 /* add/update file. mark file as infected! */
@@ -457,7 +334,7 @@
 				/* to be safe, remove file from lrufiles */
 				lrufiles_delete(filepath);
 
-				if( deny_access_on_minor_error ) {
+				if( vscan_config.common.deny_access_on_minor_error ) {
 					/* a minor error occured - deny access */
 					vscan_syslog("ERROR: daemon failed with a minor error - access to file %s denied", fname);
 
@@ -471,7 +348,7 @@
 				/* to be safe, remove file from lrufiles */
 				lrufiles_delete(filepath);
 
-				if( deny_access_on_error ) {
+				if( vscan_config.common.deny_access_on_error ) {
 					/* an error occured - can not communicate to daemon - deny access */
 					vscan_syslog("ERROR: can not communicate to clamd - access to file %s denied", fname);
 
@@ -509,7 +386,7 @@
         retval = default_vfs_ops.close(fsp, fd);
 #endif
 
-        if ( !scan_on_close ) {
+        if ( !vscan_config.common.scan_on_close ) {
                 DEBUG(3, ("samba-vscan - close: File '%s' not scanned as scan_on_close is not set\n", fsp->fsp_name));
                 return retval;
         }
@@ -526,7 +403,7 @@
 
 
 	if ( !fsp->modified ) {
-                if ( verbose_file_logging ) 
+                if ( vscan_config.common.verbose_file_logging ) 
                         vscan_syslog("INFO: file %s was not modified - not scanned", filepath);
 
 		return retval;
@@ -534,7 +411,7 @@
 
 	/* don't scan files which are in the list of exclude file types */
 	if ( filetype_skipscan(filepath) == VSCAN_FT_SKIP_SCAN ) {
-                if ( verbose_file_logging )
+                if ( vscan_config.common.verbose_file_logging )
                         vscan_syslog("File '%s' not scanned as file type is on exclude list", filepath);
 		return retval;
 	}
@@ -546,10 +423,9 @@
 	if ( (default_vfs_ops.stat(fsp->conn, fsp->fsp_name, &stat_buf)) != 0 ) {    /* an error occured */ 
 #endif
 		if( errno == ENOENT) {
-			if ( verbose_file_logging )
+			if ( vscan_config.common.verbose_file_logging )
 				vscan_syslog("INFO: File %s not found! Not scanned!", fsp->fsp_name);
-		}
-		else {
+		} else {
 			vscan_syslog("ERROR: File %s not readable or an error occured", fsp->fsp_name);
 		}
 		rv = 3;
@@ -576,9 +452,9 @@
 	if ( rv == VSCAN_SCAN_VIRUS_FOUND ) {
 		/* virus was found */
 #if (SMB_VFS_INTERFACE_VERSION >= 6)
-		vscan_do_infected_file_action(handle, fsp->conn, filepath, quarantine_dir, quarantine_prefix, infected_file_action);
+		vscan_do_infected_file_action(handle, fsp->conn, filepath, vscan_config.common.quarantine_dir, vscan_config.common.quarantine_prefix, vscan_config.common.infected_file_action);
 #else
-		vscan_do_infected_file_action(&default_vfs_ops, fsp->conn, filepath, quarantine_dir, quarantine_prefix, infected_file_action);
+		vscan_do_infected_file_action(&default_vfs_ops, fsp->conn, filepath, vscan_config.common.quarantine_dir, vscan_config.common.quarantine_prefix, vscan_config.common.infected_file_action);
 #endif
 		/* add/update file, mark file as infected! */
 		lrufiles_add(filepath, stat_buf.st_mtime, True);



-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl