X-Git-Url: https://vcs.fsf.org/?p=exim.git;a=blobdiff_plain;f=src%2Fsrc%2Ffiltertest.c;h=f54cbefb5582e80d950c2f3052ed0958a4a59cd8;hp=107e35e0b3976ace9746b1f829edd8b0d51ac8b1;hb=4ec0fcb6737da9bc2603056d56fbf6e41e061967;hpb=e4a89c47c2a7d9a9268f36728b4b4f1b028b17b1 diff --git a/src/src/filtertest.c b/src/src/filtertest.c index 107e35e0b..f54cbefb5 100644 --- a/src/src/filtertest.c +++ b/src/src/filtertest.c @@ -1,10 +1,8 @@ -/* $Cambridge: exim/src/src/filtertest.c,v 1.5 2005/04/06 14:40:24 ph10 Exp $ */ - /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2005 */ +/* Copyright (c) University of Cambridge 1995 - 2009 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -22,9 +20,10 @@ we can set up the message_body variables at the same time (in normal use, the message_body variables are not set up unless needed). The reading code is written out here rather than having options in read_message_data, in order to -keep that function as efficient as possible. Handling message_body_end is -somewhat more tedious. Pile it all into a circular buffer and sort out at the -end. +keep that function as efficient as possible. (Later: this function is now +global because it is also used by the -bem testing option.) Handling +message_body_end is somewhat more tedious. Pile it all into a circular buffer +and sort out at the end. Arguments: dot_ended TRUE if message already terminated by '.' @@ -32,8 +31,8 @@ Arguments: Returns: nothing */ -static void -read_message_body(dot_ended) +void +read_message_body(BOOL dot_ended) { register int ch; int body_len, body_end_len, header_size; @@ -48,7 +47,7 @@ header_size = message_size; if (!dot_ended && !feof(stdin)) { - if (!dot_ends) + if (!f.dot_ends) { while ((ch = getc(stdin)) != EOF) { @@ -113,7 +112,7 @@ if (body_len >= message_body_visible) int above = message_body_visible - below; if (above > 0) { - uschar *temp = store_get(below); + uschar *temp = store_get(below, TRUE); memcpy(temp, message_body_end, below); memmove(message_body_end, s+1, above); memcpy(message_body_end + above, temp, below); @@ -179,9 +178,9 @@ if (fstat(fd, &statbuf) != 0) return FALSE; } -filebuf = store_get(statbuf.st_size + 1); +filebuf = store_get(statbuf.st_size + 1, is_tainted(filename)); rc = read(fd, filebuf, statbuf.st_size); -close(fd); +(void)close(fd); if (rc != statbuf.st_size) { @@ -260,18 +259,18 @@ testing a system filter that is going to be followed by a user filter test. */ if (is_system) { - system_filtering = TRUE; - enable_dollar_recipients = TRUE; /* Permit $recipients in system filter */ + f.system_filtering = TRUE; + f.enable_dollar_recipients = TRUE; /* Permit $recipients in system filter */ yield = filter_interpret (filebuf, RDO_DEFER|RDO_FAIL|RDO_FILTER|RDO_FREEZE|RDO_REWRITE, &generated, &error); - enable_dollar_recipients = FALSE; - system_filtering = FALSE; + f.enable_dollar_recipients = FALSE; + f.system_filtering = FALSE; } else { yield = (filter_type == FILTER_SIEVE)? - sieve_interpret(filebuf, RDO_REWRITE, NULL, NULL, NULL, &generated, &error) + sieve_interpret(filebuf, RDO_REWRITE, NULL, NULL, NULL, NULL, &generated, &error) : filter_interpret(filebuf, RDO_REWRITE, &generated, &error); }