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
Taint enforce: directory open backstops, single-key search filename
[exim.git]
/
src
/
src
/
sieve.c
diff --git
a/src/src/sieve.c
b/src/src/sieve.c
index 4467665340030a48a6fee47290e98efc2a1cbfd3..bf82d5e4643d496854e1b7f97a0d487622138447 100644
(file)
--- a/
src/src/sieve.c
+++ b/
src/src/sieve.c
@@
-3445,27
+3445,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);
}
}