General tidying
[exim.git] / src / src / malware.c
index 01209d6847bcf9ba48dd56ded0598db013521d09..7685554ae8c50ea80b50cdb1f7464b7b70e02be5 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003-2013 */
+/* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003-2014 */
 /* License: GPL */
 
 /* Code for calling virus (malware) scanners. Called from acl.c. */
@@ -42,7 +42,7 @@ static struct scan
 #define MAX_CLAMD_ADDRESS_LENGTH_S "64"
 
 typedef struct clamd_address_container {
-  uschar tcp_addr[MAX_CLAMD_ADDRESS_LENGTH];
+  uschar tcp_addr[MAX_CLAMD_ADDRESS_LENGTH+1];
   unsigned int tcp_port;
 } clamd_address_container;
 
@@ -401,11 +401,13 @@ malware_internal(uschar **listptr, uschar *eml_filename, BOOL faking)
       case MC_TCP:  sock = m_tcpsocket_fromdef(scanner_options, &errstr); break;
       case MC_UNIX: sock = m_unixsocket(scanner_options, &errstr);       break;
       case MC_STRM: sock = m_streamsocket(scanner_options, &errstr);     break;
+      default: /* compiler quietening */ break;
       }
       if (sock < 0)
        return m_errlog_defer(scanent, errstr);
       break;
     }
+    DEBUG(D_lookup) debug_printf("Malware scan: %s\n", scanner_name);
 
     switch (scanent->scancode) {
     case M_FPROTD: /* "f-protd" scanner type -------------------------------- */
@@ -943,12 +945,10 @@ malware_internal(uschar **listptr, uschar *eml_filename, BOOL faking)
        sep = pclose(scanner_out);
        signal(SIGCHLD,eximsigchld); signal(SIGPIPE,eximsigpipe);
        if (sep != 0)
-         if (sep == -1)
            return m_errlog_defer(scanent,
-             string_sprintf("running scanner failed: %s", strerror(sep)));
-         else
-           return m_errlog_defer(scanent,
-             string_sprintf("scanner returned error code: %d", sep));
+               sep == -1
+               ? string_sprintf("running scanner failed: %s", strerror(sep))
+               : string_sprintf("scanner returned error code: %d", sep));
 
        if (trigger) {
          uschar * s;
@@ -1029,7 +1029,6 @@ malware_internal(uschar **listptr, uschar *eml_filename, BOOL faking)
 
        uschar *p, *vname, *result_tag, *response_end;
        int bread=0;
-       unsigned int port;
        uschar * file_name;
        uschar av_buffer[1024];
        uschar *hostname = US"";
@@ -1042,6 +1041,7 @@ malware_internal(uschar **listptr, uschar *eml_filename, BOOL faking)
        int current_server;
        int num_servers = 0;
   #ifdef WITH_OLD_CLAMAV_STREAM
+       unsigned int port;
        uschar av_buffer2[1024];
        int sockData;
   #else
@@ -1269,8 +1269,7 @@ malware_internal(uschar **listptr, uschar *eml_filename, BOOL faking)
            {
            free(clamav_fbuf);
            return m_errlog_defer_3(scanent,
-             string_sprintf("unable to send file body to socket (%s:%u)",
-               hostname, port),
+             string_sprintf("unable to send file body to socket (%s)", hostname),
              sock);
            }
   #endif