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
constification
[exim.git]
/
src
/
src
/
sieve.c
diff --git
a/src/src/sieve.c
b/src/src/sieve.c
index e07b7da1860cf310e0b7ed13200dc965d8c4294f..b6b4ec6c47c241d63401b40b037ad8705c55450f 100644
(file)
--- a/
src/src/sieve.c
+++ b/
src/src/sieve.c
@@
-3,7
+3,7
@@
*************************************************/
/* Copyright (c) Michael Haardt 2003 - 2015
*************************************************/
/* Copyright (c) Michael Haardt 2003 - 2015
- * Copyright (c) The Exim Maintainers 2016 - 20
18
+ * Copyright (c) The Exim Maintainers 2016 - 20
21
* See the file NOTICE for conditions of use and distribution.
*/
* See the file NOTICE for conditions of use and distribution.
*/
@@
-54,7
+54,7
@@
struct Sieve
{
struct Sieve
{
- uschar *filter;
+
const
uschar *filter;
const uschar *pc;
int line;
const uschar *errmsg;
const uschar *pc;
int line;
const uschar *errmsg;
@@
-328,7
+328,7
@@
if (address->length>0)
{
ss = parse_extract_address(address->character, &error, &start, &end, &domain,
FALSE);
{
ss = parse_extract_address(address->character, &error, &start, &end, &domain,
FALSE);
- if (
ss == NULL
)
+ if (
!ss
)
{
filter->errmsg=string_sprintf("malformed address \"%s\" (%s)",
address->character, error);
{
filter->errmsg=string_sprintf("malformed address \"%s\" (%s)",
address->character, error);
@@
-3087,11
+3087,8
@@
while (*filter->pc)
if ((pid = child_open_exim2(&fd, envelope_from, envelope_from,
US"sieve-notify")) >= 1)
{
if ((pid = child_open_exim2(&fd, envelope_from, envelope_from,
US"sieve-notify")) >= 1)
{
- FILE *f;
- uschar *buffer;
- int buffer_capacity;
+ FILE * f = fdopen(fd, "wb");
- f = fdopen(fd, "wb");
fprintf(f,"From: %s\n", from.length == -1
? expand_string(US"$local_part_prefix$local_part$local_part_suffix@$domain")
: from.character);
fprintf(f,"From: %s\n", from.length == -1
? expand_string(US"$local_part_prefix$local_part$local_part_suffix@$domain")
: from.character);
@@
-3104,12
+3101,9
@@
while (*filter->pc)
message.character=US"Notification";
message.length=Ustrlen(message.character);
}
message.character=US"Notification";
message.length=Ustrlen(message.character);
}
- /* Allocation is larger than necessary, but enough even for split MIME words */
- buffer_capacity = 32 + 4*message.length;
- buffer=store_get(buffer_capacity, TRUE);
if (message.length != -1)
fprintf(f, "Subject: %s\n", parse_quote_2047(message.character,
if (message.length != -1)
fprintf(f, "Subject: %s\n", parse_quote_2047(message.character,
- message.length, US"utf-8",
buffer, buffer_capacity,
TRUE));
+ message.length, US"utf-8", TRUE));
fprintf(f,"\n");
if (body.length>0) fprintf(f,"%s\n",body.character);
fflush(f);
fprintf(f,"\n");
if (body.length>0) fprintf(f,"%s\n",body.character);
fflush(f);
@@
-3263,8
+3257,6
@@
while (*filter->pc)
if (exec)
{
address_item *addr;
if (exec)
{
address_item *addr;
- uschar *buffer;
- int buffer_capacity;
md5 base;
uschar digest[16];
uschar hexdigest[33];
md5 base;
uschar digest[16];
uschar hexdigest[33];
@@
-3342,11
+3334,8
@@
while (*filter->pc)
addr->reply->from = expand_string(US"$local_part@$domain");
else
addr->reply->from = from.character;
addr->reply->from = expand_string(US"$local_part@$domain");
else
addr->reply->from = from.character;
- /* Allocation is larger than necessary, but enough even for split MIME words */
- buffer_capacity=32+4*subject.length;
- buffer = store_get(buffer_capacity, is_tainted(subject.character));
/* deconst cast safe as we pass in a non-const item */
/* deconst cast safe as we pass in a non-const item */
- addr->reply->subject = US parse_quote_2047(subject.character, subject.length, US"utf-8",
buffer, buffer_capacity,
TRUE);
+ addr->reply->subject = US parse_quote_2047(subject.character, subject.length, US"utf-8", TRUE);
addr->reply->oncelog = string_from_gstring(once);
addr->reply->once_repeat=days*86400;
addr->reply->oncelog = string_from_gstring(once);
addr->reply->once_repeat=days*86400;
@@
-3445,27
+3434,24
@@
if (exec && filter->vacation_directory != NULL && filter_test == FTEST_NONE)
/* clean up old vacation log databases */
/* clean up old vacation log databases */
- oncelogdir=opendir(CS filter->vacation_directory);
-
- if (oncelogdir ==(DIR*)0 && errno != ENOENT)
+ if ( !(oncelogdir = exim_opendir(filter->vacation_directory))
+ && errno != ENOENT)
{
{
- filter->errmsg
=
CUS "unable to open vacation directory";
+ filter->errmsg
=
CUS "unable to open vacation directory";
return -1;
}
return -1;
}
- if (oncelogdir
!= NULL
)
+ if (oncelogdir)
{
time(&now);
{
time(&now);
- while ((oncelog=readdir(oncelogdir))!=(struct dirent*)0)
- {
+ while ((oncelog = readdir(oncelogdir)))
if (strlen(oncelog->d_name)==32)
{
if (strlen(oncelog->d_name)==32)
{
- uschar *s
=
string_sprintf("%s/%s",filter->vacation_directory,oncelog->d_name);
+ uschar *s
=
string_sprintf("%s/%s",filter->vacation_directory,oncelog->d_name);
if (Ustat(s,&properties)==0 && (properties.st_mtime+VACATION_MAX_DAYS*86400)<now)
Uunlink(s);
}
if (Ustat(s,&properties)==0 && (properties.st_mtime+VACATION_MAX_DAYS*86400)<now)
Uunlink(s);
}
- }
closedir(oncelogdir);
}
}
closedir(oncelogdir);
}
}
@@
-3568,7
+3554,7
@@
Returns: FF_DELIVERED success, a significant action was taken
*/
int
*/
int
-sieve_interpret(uschar *filter, int options, uschar *vacation_directory,
+sieve_interpret(
const
uschar *filter, int options, uschar *vacation_directory,
uschar *enotify_mailto_owner, uschar *useraddress, uschar *subaddress,
address_item **generated, uschar **error)
{
uschar *enotify_mailto_owner, uschar *useraddress, uschar *subaddress,
address_item **generated, uschar **error)
{
@@
-3576,9
+3562,6
@@
struct Sieve sieve;
int r;
uschar *msg;
int r;
uschar *msg;
-options = options; /* Keep picky compilers happy */
-error = error;
-
DEBUG(D_route) debug_printf("Sieve: start of processing\n");
sieve.filter = filter;
DEBUG(D_route) debug_printf("Sieve: start of processing\n");
sieve.filter = filter;