Make runtest more resilient to setup problems
[exim.git] / src / src / malware.c
index eb0c33cea1efb11aa853129e6ab26ffbae57ad7d..864564ffc926edb4d2a563db6236897779e1e66f 100644 (file)
@@ -1,5 +1,3 @@
-/* $Cambridge: exim/src/src/malware.c,v 1.21 2010/06/07 00:12:42 pdp Exp $ */
-
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
@@ -71,17 +69,22 @@ Returns:      Exim message processing code (OK, FAIL, DEFER, ...)
 int malware(uschar **listptr) {
   uschar scan_filename[1024];
   BOOL fits;
+  int ret;
 
   fits = string_format(scan_filename, sizeof(scan_filename),
       CS"%s/scan/%s/%s.eml", spool_directory, message_id, message_id);
   if (!fits)
     {
+    av_failed = TRUE;
     log_write(0, LOG_MAIN|LOG_PANIC,
         "malware filename does not fit in buffer [malware()]");
     return DEFER;
   }
 
-  return malware_internal(listptr, scan_filename, FALSE);
+  ret = malware_internal(listptr, scan_filename, FALSE);
+  if (ret == DEFER) av_failed = TRUE;
+
+  return ret;
 }
 
 
@@ -592,7 +595,7 @@ static int malware_internal(uschar **listptr, uschar *eml_filename, BOOL faking)
       }
     }
     else {
-      char *drweb_s = NULL;
+      const char *drweb_s = NULL;
 
       if (drweb_rc & DERR_READ_ERR) drweb_s = "read error";
       if (drweb_rc & DERR_NOMEMORY) drweb_s = "no memory";
@@ -1910,14 +1913,14 @@ static int mksd_parse_line (char *line)
 static int mksd_scan_packed(int sock, uschar *scan_filename)
 {
   struct iovec iov[3];
-  char *cmd = "MSQ\n";
+  const char *cmd = "MSQ\n";
   uschar av_buffer[1024];
 
-  iov[0].iov_base = cmd;
+  iov[0].iov_base = (void *) cmd;
   iov[0].iov_len = 3;
   iov[1].iov_base = CS scan_filename;
   iov[1].iov_len = Ustrlen(scan_filename);
-  iov[2].iov_base = cmd + 3;
+  iov[2].iov_base = (void *) (cmd + 3);
   iov[2].iov_len = 1;
 
   if (mksd_writev (sock, iov, 3) < 0)