diff options
author | Phil Pennock <pdp@exim.org> | 2011-01-23 05:44:45 -0500 |
---|---|---|
committer | Phil Pennock <pdp@exim.org> | 2011-01-23 05:44:45 -0500 |
commit | b7487bcec431809cb7fc3c2b42fcd607e43d37e7 (patch) | |
tree | 4e02a85e56d765269e861791ab00acd7c678f775 /src | |
parent | b70d25860f3e7dfe54ad69a5695a9bff7d380f08 (diff) |
Bug 1071: fix delivery logging with untrusted macros.
If dropping privileges for untrusted macros, we disabled normal logging
on the basis that it would fail; for the Exim run-time user, this is not
the case, and it resulted in successful deliveries going unlogged.
Fixed. Reported by Andreas Metzler.
Diffstat (limited to 'src')
-rw-r--r-- | src/src/exim.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/src/exim.c b/src/src/exim.c index f1c3199c3..e23697506 100644 --- a/src/src/exim.c +++ b/src/src/exim.c @@ -3338,9 +3338,13 @@ if (( /* EITHER */ and should be used for any logging information because attempts to write to the log will usually fail. To arrange this, we unset really_exim. However, if no stderr is available there is no point - we might as well have a go - at the log (if it fails, syslog will be written). */ + at the log (if it fails, syslog will be written). - if (log_stderr != NULL) really_exim = FALSE; + Note that if the invoker is Exim, the logs remain available. Messing with + this causes unlogged successful deliveries. */ + + if ((log_stderr != NULL) && (real_uid != exim_uid)) + really_exim = FALSE; } /* Privilege is to be retained for the moment. It may be dropped later, |