git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add missing colon when logging outgoing I=
[exim.git]
/
src
/
src
/
malware.c
diff --git
a/src/src/malware.c
b/src/src/malware.c
index 49456de4e5507f5069e52885a21e2d778ebde0a7..2e783e398eb9784ae58caddf4c0708a6a9804077 100644
(file)
--- a/
src/src/malware.c
+++ b/
src/src/malware.c
@@
-49,6
+49,7
@@
typedef enum {
#ifndef DISABLE_MAL_CMDLINE
M_CMDL,
#endif
#ifndef DISABLE_MAL_CMDLINE
M_CMDL,
#endif
+ M_DUMMY
} scanner_t;
typedef enum {MC_NONE, MC_TCP, MC_UNIX, MC_STRM} contype_t;
static struct scan
} scanner_t;
typedef enum {MC_NONE, MC_TCP, MC_UNIX, MC_STRM} contype_t;
static struct scan
@@
-106,16
+107,16
@@
static struct scan
void
features_malware(void)
{
void
features_malware(void)
{
-const struct scan * sc;
const uschar * s;
uschar * t;
uschar buf[64];
spf(buf, sizeof(buf), US"_HAVE_MALWARE_");
const uschar * s;
uschar * t;
uschar buf[64];
spf(buf, sizeof(buf), US"_HAVE_MALWARE_");
-for (sc = m_scans; sc->scancode != -1; sc++)
+for (
const struct scan *
sc = m_scans; sc->scancode != -1; sc++)
{
{
- for(s = sc->name, t = buf+14; *s; s++) if (*s != '-') *t++ = toupper(*s);
+ for (s = sc->name, t = buf+14; *s; s++) if (*s != '-')
+ *t++ = toupper(*s);
*t = '\0';
builtin_macro_create(buf);
}
*t = '\0';
builtin_macro_create(buf);
}
@@
-191,11
+192,12
@@
static const pcre * fprot6d_re_virus = NULL;
/******************************************************************************/
/******************************************************************************/
+#ifndef DISABLE_MAL_KAV
/* Routine to check whether a system is big- or little-endian.
Ripped from http://www.faqs.org/faqs/graphics/fileformats-faq/part4/section-7.html
Needed for proper kavdaemon implementation. Sigh. */
/* Routine to check whether a system is big- or little-endian.
Ripped from http://www.faqs.org/faqs/graphics/fileformats-faq/part4/section-7.html
Needed for proper kavdaemon implementation. Sigh. */
-#define BIG_MY_ENDIAN 0
-#define LITTLE_MY_ENDIAN 1
+#
define BIG_MY_ENDIAN 0
+#
define LITTLE_MY_ENDIAN 1
static int test_byte_order(void);
static inline int
test_byte_order()
static int test_byte_order(void);
static inline int
test_byte_order()
@@
-204,6
+206,7
@@
test_byte_order()
char *byte = CS &word;
return(byte[0] ? LITTLE_MY_ENDIAN : BIG_MY_ENDIAN);
}
char *byte = CS &word;
return(byte[0] ? LITTLE_MY_ENDIAN : BIG_MY_ENDIAN);
}
+#endif
BOOL malware_ok = FALSE;
BOOL malware_ok = FALSE;
@@
-262,13
+265,6
@@
m_panic_defer_3(struct scan * scanent, const uschar * hostport,
(void) close(fd_to_close);
return m_panic_defer(scanent, hostport, str);
}
(void) close(fd_to_close);
return m_panic_defer(scanent, hostport, str);
}
-static inline int
-m_log_defer_3(struct scan * scanent, const uschar * hostport,
- const uschar * str, int fd_to_close)
-{
-(void) close(fd_to_close);
-return m_log_defer(scanent, hostport, str);
-}
/*************************************************/
/*************************************************/
@@
-902,7
+898,6
@@
badseek: err = errno;
/* "virus(es) found" if virus number is > 0 */
if (drweb_vnum)
{
/* "virus(es) found" if virus number is > 0 */
if (drweb_vnum)
{
- int i;
gstring * g = NULL;
/* setup default virus name */
gstring * g = NULL;
/* setup default virus name */
@@
-913,7
+908,7
@@
badseek: err = errno;
drweb_re = m_pcre_compile(drweb_re_str, &errstr);
/* read and concatenate virus names into one string */
drweb_re = m_pcre_compile(drweb_re_str, &errstr);
/* read and concatenate virus names into one string */
- for (i = 0; i < drweb_vnum; i++)
+ for (i
nt i
= 0; i < drweb_vnum; i++)
{
int ovector[10*3];
{
int ovector[10*3];
@@
-1048,7
+1043,7
@@
badseek: err = errno;
#ifndef DISABLE_MAL_FSECURE
case M_FSEC: /* "fsecure" scanner type ---------------------------------- */
{
#ifndef DISABLE_MAL_FSECURE
case M_FSEC: /* "fsecure" scanner type ---------------------------------- */
{
- int i,
j,
bread = 0;
+ int i, bread = 0;
uschar * file_name;
uschar av_buffer[1024];
static uschar *cmdopt[] = { US"CONFIGURE\tARCHIVE\t1\n",
uschar * file_name;
uschar av_buffer[1024];
static uschar *cmdopt[] = { US"CONFIGURE\tARCHIVE\t1\n",
@@
-1074,7
+1069,7
@@
badseek: err = errno;
return m_panic_defer_3(scanent, CUS callout_address,
string_sprintf("unable to read answer %d (%s)", i, strerror(errno)),
malware_daemon_ctx.sock);
return m_panic_defer_3(scanent, CUS callout_address,
string_sprintf("unable to read answer %d (%s)", i, strerror(errno)),
malware_daemon_ctx.sock);
- for (j = 0; j < bread; j++)
+ for (
int
j = 0; j < bread; j++)
if (av_buffer[j] == '\r' || av_buffer[j] == '\n')
av_buffer[j] ='@';
}
if (av_buffer[j] == '\r' || av_buffer[j] == '\n')
av_buffer[j] ='@';
}
@@
-1578,6
+1573,7
@@
badseek: err = errno;
* on both connections (as one host could resolve to multiple ips) */
for (;;)
{
* on both connections (as one host could resolve to multiple ips) */
for (;;)
{
+ /*XXX we trust that the cmd_str is ideempotent */
if ((malware_daemon_ctx.sock = m_tcpsocket(cd->hostspec, cd->tcp_port,
&connhost, &errstr, &cmd_str)) >= 0)
{
if ((malware_daemon_ctx.sock = m_tcpsocket(cd->hostspec, cd->tcp_port,
&connhost, &errstr, &cmd_str)) >= 0)
{
@@
-1980,7
+1976,7
@@
b_seek: err = errno;
and the [ ] marker.
[+] - not infected
[L] - infected
and the [ ] marker.
[+] - not infected
[L] - infected
- [E] - some error occured
+ [E] - some error occur
r
ed
Such marker follows the first non-escaped TAB. For more information
see avast-protocol(5)
Such marker follows the first non-escaped TAB. For more information
see avast-protocol(5)
@@
-2226,7
+2222,7
@@
sender_address = US"malware-sender@example.net";
return_path = US"";
recipients_list = NULL;
receive_add_recipient(US"malware-victim@example.net", -1);
return_path = US"";
recipients_list = NULL;
receive_add_recipient(US"malware-victim@example.net", -1);
-enable_dollar_recipients = TRUE;
+
f.
enable_dollar_recipients = TRUE;
ret = malware_internal(US"*", eml_filename, 0);
ret = malware_internal(US"*", eml_filename, 0);
@@
-2285,9
+2281,8
@@
if (!fprot6d_re_virus)
void
malware_show_supported(FILE * f)
{
void
malware_show_supported(FILE * f)
{
-struct scan * sc;
fprintf(f, "Malware:");
fprintf(f, "Malware:");
-for (s
c = m_scans; sc->scancode !=
-1; sc++) fprintf(f, " %s", sc->name);
+for (s
truct scan * sc = m_scans; sc->scancode != (scanner_t)
-1; sc++) fprintf(f, " %s", sc->name);
fprintf(f, "\n");
}
fprintf(f, "\n");
}