diff options
author | Philip Hazel <ph10@hermes.cam.ac.uk> | 2005-03-22 14:50:10 +0000 |
---|---|---|
committer | Philip Hazel <ph10@hermes.cam.ac.uk> | 2005-03-22 14:50:10 +0000 |
commit | 49c2d5ea04847f8f7f1344bfd73582e9a0d3b564 (patch) | |
tree | 4da63eed1538e095f024ab8ab20519ed6c12ce35 /src | |
parent | 1a46a8c5c398c91f20c3f4def0ceb448ec8de96a (diff) |
Attempt to flatten LDAP passwords in address' error messages (after
expansion failure) so they don't get published.
Diffstat (limited to 'src')
-rw-r--r-- | src/src/deliver.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/src/deliver.c b/src/src/deliver.c index 7dc460ce7..7dbb94fc6 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/deliver.c,v 1.8 2005/03/15 12:27:54 ph10 Exp $ */ +/* $Cambridge: exim/src/src/deliver.c,v 1.9 2005/03/22 14:50:10 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -729,9 +729,27 @@ else if (driver_type == DTYPE_ROUTER) /* If there's an error message set, ensure that it contains only printing characters - it should, but occasionally things slip in and this at least -stops the log format from getting wrecked. */ +stops the log format from getting wrecked. We also scan the message for an LDAP +expansion item that has a password setting, and flatten the password. This is a +fudge, but I don't know a cleaner way of doing this. (If the item is badly +malformed, it won't ever have gone near LDAP.) */ -if (addr->message != NULL) addr->message = string_printing(addr->message); +if (addr->message != NULL) + { + addr->message = string_printing(addr->message); + if (Ustrstr(addr->message, "failed to expand") != NULL && + (Ustrstr(addr->message, "ldap:") != NULL || + Ustrstr(addr->message, "ldapdn:") != NULL || + Ustrstr(addr->message, "ldapm:") != NULL)) + { + uschar *p = Ustrstr(addr->message, "pass="); + if (p != NULL) + { + p += 5; + while (*p != 0 && !isspace(*p)) *p++ = 'x'; + } + } + } /* If we used a transport that has one of the "return_output" options set, and if it did in fact generate some output, then for return_output we treat the |