From f7329deb2136b3b0e89a9a3bb67700ab4f1eb3a6 Mon Sep 17 00:00:00 2001 From: Michiel Broek Date: Sat, 3 Feb 2007 12:41:26 +0000 Subject: [PATCH] Better virusscanner check --- ChangeLog | 7 +++++++ mbfido/virscan.c | 13 +++++++++---- mbsebbs/filesub.c | 6 +++--- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 78e2a02d..871ef2ac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,13 @@ v0.91.2 14-Jan-2007 mbselib: Fixed commandline address parsing if a 2d address was given. + mbfido: + Check if active marked virusscanner is really present on the + system. + + mbsebbs: + Check if active marked virusscanner is really present on the + system. v0.91.1 22-Dec-2006 diff --git a/mbfido/virscan.c b/mbfido/virscan.c index ba0bcf91..75c3e8a9 100644 --- a/mbfido/virscan.c +++ b/mbfido/virscan.c @@ -4,7 +4,7 @@ * Purpose ...............: Scan for virusses * ***************************************************************************** - * Copyright (C) 1997-2005 + * Copyright (C) 1997-2007 * * Michiel Broek FIDO: 2:280/2802 * Beekmansbos 10 @@ -62,8 +62,13 @@ int VirScan(char *path) fread(&virscanhdr, sizeof(virscanhdr), 1, fp); while (fread(&virscan, virscanhdr.recsize, 1, fp) == 1) { - if (virscan.available) - has_scan = TRUE; + if (virscan.available) { + if (file_exist(virscan.scanner, X_OK)) { + has_scan = TRUE; + } else { + Syslog('+', "Warning: virusscanner %s marked active but not present", virscan.comment); + } + } } if (!has_scan) { Syslog('+', "No active virus scanners, skipping scan"); @@ -85,7 +90,7 @@ int VirScan(char *path) fseek(fp, virscanhdr.hdrsize, SEEK_SET); while (fread(&virscan, virscanhdr.recsize, 1, fp) == 1) { - if (virscan.available) { + if (virscan.available && file_exist(virscan.scanner, X_OK)) { Altime(3600); vrc = execute_str(virscan.scanner, virscan.options, (char *)NULL, (char *)"/dev/null", stdlog, errlog); if (file_size(stdlog)) { diff --git a/mbsebbs/filesub.c b/mbsebbs/filesub.c index e7a5b680..99febd2d 100644 --- a/mbsebbs/filesub.c +++ b/mbsebbs/filesub.c @@ -4,7 +4,7 @@ * Purpose ...............: All the file sub functions. * ***************************************************************************** - * Copyright (C) 1997-2005 + * Copyright (C) 1997-2007 * * Michiel Broek FIDO: 2:280/2802 * Beekmansbos 10 @@ -479,7 +479,7 @@ int ScanDirect(char *fn) while (fread(&virscan, virscanhdr.recsize, 1, fp) == 1) { - if (virscan.available) { + if (virscan.available && file_exist(virscan.scanner, X_OK)) { /* Scanning */ /* with */ snprintf(msg, 81, "%s %s %s %s ", (char *) Language(132), fn, (char *) Language(133), virscan.comment); pout(CFG.TextColourF, CFG.TextColourB, msg); @@ -617,7 +617,7 @@ int ScanArchive(char *fn, char *ftype) fread(&virscanhdr, sizeof(virscanhdr), 1, fp); while (fread(&virscan, virscanhdr.recsize, 1, fp) == 1) { - if (virscan.available) { + if (virscan.available && file_exist(virscan.scanner, X_OK)) { /* Scanning */ /* with */ snprintf(msg, 81, "%s %s %s %s ", (char *) Language(132), fn, (char *) Language(133), virscan.comment); pout(CFG.TextColourF, CFG.TextColourB, msg);