diff options
Diffstat (limited to 'mail/antivirus-milter/files/patch-antivirus.c')
-rw-r--r-- | mail/antivirus-milter/files/patch-antivirus.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/mail/antivirus-milter/files/patch-antivirus.c b/mail/antivirus-milter/files/patch-antivirus.c new file mode 100644 index 000000000000..da13da22fa36 --- /dev/null +++ b/mail/antivirus-milter/files/patch-antivirus.c @@ -0,0 +1,73 @@ +--- antivirus.c.orig Tue Jul 15 21:27:14 2003 ++++ antivirus.c Fri Mar 5 07:56:07 2004 +@@ -85,6 +85,7 @@ + static char *FORMAT=NULL; + static sfsistat avfailcode=0; + static int purgevirus=0; ++static int skipwords=0; + static char *avargs[]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; + + /* +@@ -128,6 +129,12 @@ + #define FORMAT_SOPHOS ">>> Virus '%[^']s' found in file %*s" + + /* ++** This one is for clamav ++*/ ++#define FORMAT_CLAMAV " %s FOUND" ++#define SCANARGS_CLAMAV "--disable-summary" ++ ++/* + ** this can be given on the command line + */ + static char *configfile=NULL; +@@ -502,6 +509,7 @@ + int retval; + int fd; + int i; ++ char *word; + char *p=NULL; + char *av[]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; + +@@ -558,7 +566,14 @@ + memset(viruses,0,sizeof(buf)); + while (fgets(buf,sizeof(buf),priv->childfp)!=NULL) + { +- if (sscanf(buf,format,tmp)==1) ++ word = buf; ++ if (skipwords > 0 ) ++ { ++ word = strchr( word, ' ' ); ++ if ( word == NULL ) ++ word = buf; ++ } ++ if (sscanf(word,format,tmp)==1) + { + if (viruses[0]) + strncat(viruses," ",sizeof(viruses)); +@@ -1211,6 +1226,7 @@ + if (AVFAILACTION==NULL) AVFAILACTION=CONF_AVFAILACTION; + if (VIRUSACTION==NULL) VIRUSACTION=CONF_VIRUSACTION; + ++ skipwords = 0; + if (strcasecmp(AVPRODUCT,"mcafee")==0) + { + FORMAT=FORMAT_MCAFEE; +@@ -1225,10 +1241,16 @@ + { + FORMAT=FORMAT_FSAV; + } ++ else if (strcasecmp(AVPRODUCT,"clamav")==0) ++ { ++ FORMAT=FORMAT_CLAMAV; ++ AVSCANARGS=SCANARGS_CLAMAV; ++ skipwords = 1; ++ } + else + { + fprintf(stderr,"init(): unrecognized AVPRODUCT %s\n",AVPRODUCT); +- fprintf(stderr,"init(): valid values are: mcafee, fsva, sophos\n"); ++ fprintf(stderr,"init(): valid values are: mcafee, fsva, sophos, clamav\n"); + return(-1); + } + |