samba-vscan/icap vscan-icap.c,1.14.2.2,1.14.2.3 vscan-icap_core.c,1.5.2.4,1.5.2.5

Rainer Link <[email protected]> Sat, 25 Sep 2004 12:27:07 +0000
Newsgroups gmane.comp.security.virus.openantivirus.cvs
Message-ID <[email protected]>
Update of /cvsroot/openantivirus/samba-vscan/icap
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6692/icap

Modified Files:
      Tag: VSCAN_0_3
	vscan-icap.c vscan-icap_core.c 
Log Message:
make the code a little bit more read-able (esp. the check for return values)


Index: vscan-icap.c
===================================================================
RCS file: /cvsroot/openantivirus/samba-vscan/icap/vscan-icap.c,v
retrieving revision 1.14.2.2
retrieving revision 1.14.2.3
diff -u -d -r1.14.2.2 -r1.14.2.3
--- vscan-icap.c	12 Sep 2003 07:12:15 -0000	1.14.2.2
+++ vscan-icap.c	25 Sep 2004 12:27:05 -0000	1.14.2.3
@@ -4,7 +4,7 @@
  * virusscanning VFS module for samba.  Log infected files via syslog
  * facility and block access using an ICAP-enabled virus scanning service.
  *
- * Copyright (C) Rainer Link, 2001-2003
+ * Copyright (C) Rainer Link, 2001-2004
  *               OpenAntiVirus.org <rainer-pBPPa8WU5k41Tgt60Rntydi2O/[email protected]>
  * Copyright (C) Stefan (metze) Metzmacher, 2003
  *               <[email protected]>
@@ -364,7 +364,7 @@
 #else
 		return default_vfs_ops.open(conn, fname, flags, mode);
 #endif
-	else if ( filetype_skipscan(filepath) == 1 ) {
+	else if ( filetype_skipscan(filepath) == VSCAN_FT_SKIP_SCAN ) {
 		if ( verbose_file_logging )
 			vscan_syslog("File '%s' not scanned as file type is on exclude list", filepath);
 #if (SMB_VFS_INTERFACE_VERSION >= 6)
@@ -389,7 +389,7 @@
 
                         /* must file actually be scanned? */
                         must_be_checked = lrufiles_must_be_checked(filepath, stat_buf.st_mtime);
-                        if ( must_be_checked == -1 ) {
+                        if ( must_be_checked == VSCAN_LRU_DENY_ACCESS ) {
                                 /* file has already been checked and marked as infected */
                                 /* deny access */
                                 if ( verbose_file_logging )
@@ -401,7 +401,7 @@
 				/* deny access */
                                 errno = EACCES;
                                 return -1;
-                        } else if ( must_be_checked == 0 )  {
+                        } 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 )
                                         vscan_syslog("File '%s' has already been scanned, not marked as infected and not modified. Not scanned anymore. Access granted", filepath);
@@ -420,7 +420,7 @@
 
 			/* scan file */
 			retval = vscan_icap_scanfile(sockfd, filepath, client_ip);
-			if ( retval == -2 && deny_access_on_minor_error ) {
+			if ( retval == VSCAN_SCAN_MINOR_ERROR && 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);
 				vscan_icap_end(sockfd);
@@ -431,7 +431,7 @@
                                 /* deny access */
 				errno = EACCES;
 				return -1;
-                        } else if ( retval == -1 && deny_access_on_error ) {
+                        } else if ( retval == VSCAN_SCAN_ERROR && deny_access_on_error ) {
                                 /* an error occured - can not communicate to daemon - deny access */
                                 vscan_syslog("ERROR: can not communicate to daemon - access to file %s denied", fname);
                                 vscan_icap_end(sockfd);
@@ -443,7 +443,7 @@
 
                                 errno = EACCES;
                                 return -1;
-			} else if ( retval == 1 ) {
+			} else if ( retval == VSCAN_SCAN_VIRUS_FOUND ) {
 				/* close socket */
 				vscan_icap_end(sockfd);
 				/* do action ... */
@@ -460,7 +460,7 @@
 				/* virus found, deny acces */
 				errno = EACCES; 
 				return -1;
-                        } else if ( retval == 0 ) {
+                        } else if ( retval == VSCAN_SCAN_OK ) {
                                 /* file is clean, add to lrufiles */
                                 lrufiles_add(filepath, stat_buf.st_mtime, False);
                         }
@@ -519,7 +519,7 @@
 	}
 
 	/* don't scan files which are in the list of exclude file types */
-	if ( filetype_skipscan(filepath) == 1 ) {
+	if ( filetype_skipscan(filepath) == VSCAN_FT_SKIP_SCAN ) {
                 if ( verbose_file_logging )
                         vscan_syslog("File '%s' not scanned as file type is on exclude list", filepath);
 		return retval;
@@ -533,7 +533,7 @@
 		safe_strcpy(client_ip, fsp->conn->client_address, CLIENT_IP_SIZE -1);
 		rv = vscan_icap_scanfile(sockfd, filepath, client_ip);
 		vscan_icap_end(sockfd);
-		if ( rv == 1 ) {
+		if ( rv == VSCAN_SCAN_VIRUS_FOUND ) {
 			/* virus was found */
 #if (SMB_VFS_INTERFACE_VERSION >= 6)
 			rc = vscan_do_infected_file_action(handle, fsp->conn, filepath, quarantine_dir, quarantine_prefix, infected_file_action);

Index: vscan-icap_core.c
===================================================================
RCS file: /cvsroot/openantivirus/samba-vscan/icap/vscan-icap_core.c,v
retrieving revision 1.5.2.4
retrieving revision 1.5.2.5
diff -u -d -r1.5.2.4 -r1.5.2.5
--- vscan-icap_core.c	2 May 2004 19:45:31 -0000	1.5.2.4
+++ vscan-icap_core.c	25 Sep 2004 12:27:05 -0000	1.5.2.5
@@ -3,7 +3,7 @@
  *
  * Core Interface for ICAP			
  *
- * Copyright (C) Rainer Link, 2002-2003
+ * Copyright (C) Rainer Link, 2002-2004
  *               OpenAntiVirus.org <rainer-pBPPa8WU5k41Tgt60Rntydi2O/[email protected]>
  *
  * This software is licensed under the GNU General Public License (GPL)
@@ -93,7 +93,7 @@
 	/* FIXME: do we break LFS support here? */
         if ( stat(scan_file, &stat_buf) !=  0 ) {
 		vscan_syslog("ERROR: could not stat file '%s'", scan_file);
-		return(-1);
+		return VSCAN_SCAN_ERROR;
         }
 
 	/* create Enculapsed header */
@@ -115,7 +115,7 @@
         fpin = fdopen(sockfd, "r");
         if ( fpin == NULL ) {
                 vscan_syslog("ERROR: can not open stream for reading - %s", strerror(errno));
-                return -1;
+                return VSCAN_SCAN_ERROR;
         }
 
         fpout = fdopen(sockfd, "w");
@@ -123,7 +123,7 @@
 		/* close fpin */
 		fclose(fpin);
                 vscan_syslog("ERROR: can not open stream for writing - %s", strerror(errno));
-                return -1;
+                return VSCAN_SCAN_ERROR;
         } 
 
         if ( verbose_file_logging )
@@ -135,21 +135,21 @@
 		/* closeing streams */
 		fclose(fpin);
 		fclose(fpout);
-		return(-1);
+		return VSCAN_SCAN_ERROR;
 	}
 	if ( fputs(hrhs, fpout) == EOF ) {
 		vscan_syslog("ERROR: could not send data to ICAP server!");
 		/* closing streams */
 		fclose(fpin);
 		fclose(fpout);
-                return(-1);
+                return VSCAN_SCAN_ERROR;
         }
 	if ( fputs(ehs, fpout) == EOF ) {
                 vscan_syslog("ERROR: could not send data to ICAP server!");
 		/* closing streams */
 		fclose(fpin);
 		fclose(fpout);
-                return(-1);
+                return VSCAN_SCAN_ERROR;
         }
 	/* send length information in hex */
 	if ( fputs(ls, fpout) == EOF ) {
@@ -157,7 +157,7 @@
 		/* closing streams */
 		fclose(fpin);
 		fclose(fpout);
-                return(-1);
+                return VSCAN_SCAN_ERROR;
 	}
 	fflush(fpout);
 
@@ -168,7 +168,7 @@
 		/* closing streams */
 		fclose(fpin);
 		fclose(fpout);
-                return(-1);
+                return VSCAN_SCAN_ERROR;
         }
         while ( (!feof(input_file)) && (!ferror(input_file)) ) {
                 nread = fread(buf, 1, sizeof(buf), input_file);
@@ -178,7 +178,7 @@
 			/* closing streams */
 			fclose(fpin);
 			fclose(fpout);
-			return(-1);
+			return VSCAN_SCAN_ERROR;
 		}
         }
 	if ( ferror(input_file) ) {
@@ -186,14 +186,14 @@
 		/* closeing streams */
 		fclose(fpin);
 		fclose(fpout);
-		return(-1);
+		return VSCAN_SCAN_ERROR;
 	}
 	if ( fclose(input_file) == EOF ) {
 		vscan_syslog("ERROR: could not close file '%s', reason: %s", scan_file, strerror(errno));
 		/* closing streams */
 		fclose(fpin);
 		fclose(fpout);
-		return(-1);
+		return VSCAN_SCAN_ERROR;
 	}
 
 	/* now send the 'end marker' */
@@ -202,14 +202,14 @@
 		/* closing streams */
 		fclose(fpin);
 		fclose(fpout);
-                return(-1);
+                return VSCAN_SCAN_ERROR;
         }
         if ( fflush(fpout) == EOF ) {
                 vscan_syslog("ERROR: can not flush output stream - %s", strerror(errno));
 		/* closing streams */
 		fclose(fpin);
 		fclose(fpout);
-                return(-1); 
+                return VSCAN_SCAN_ERROR; 
         }
 
 	/* OK, now get the response from the ICAP server ... */
@@ -230,7 +230,7 @@
 						/* closing streams */
 						fclose(fpin);
 						fclose(fpout);
-						return(0);
+						return VSCAN_SCAN_OK;
                                         }
                                         else if ( strncmp("403", str, 3) == 0 ) {
                                                 infected = True;
@@ -240,21 +240,21 @@
 						/* closing streams */
 						fclose(fpin);
 						fclose(fpout);
-						return -2;
+						return VSCAN_SCAN_MINOR_ERROR;
 					}
                                 } else {
 					vscan_syslog("ERROR: could not parse ICAP response line!");
 					/* closing streams */
 					fclose(fpin);
 					fclose(fpout);
-					return(-1);
+					return VSCAN_SCAN_ERROR;
                                 }
                         } else {
 				vscan_syslog("ERROR: got no ICAP response line!");
 				/* closing streams */
 				fclose(fpin);
 				fclose(fpout);
-				return(-1);
+				return VSCAN_SCAN_ERROR;
                         }
 
                         first_line = False;
@@ -265,13 +265,13 @@
 				/* closing streams */
 				fclose(fpin);
 				fclose(fpout);
-				return(1);
+				return VSCAN_SCAN_VIRUS_FOUND;
 			}
 		}
 	}
 	fclose(fpin);
 	fclose(fpout);
-	return(1);
+	return VSCAN_SCAN_VIRUS_FOUND;
 
 }
 



-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php