execution flows will use the same DH primes (currently
exim.dev.20160529.3).
-JH/25 OpenSSL: Fix back-compatibiility behaviour surrounding tls_certificates
+JH/25 OpenSSL: Fix back-compatibility behaviour surrounding tls_certificates
option in smtp transport, to match the documentation. Previously
verification was not being done in some cases where it should have been.
+JH/26 Bug 2646: fix a memory usage issue in ldap lookups. Previously, when more
+ than one server was defined and depending on the platform memory layout
+ details, an internal consistency trap could be hit while walking the list
+ of servers.
+
Exim version 4.94
-----------------
uschar *user = NULL;
uschar *password = NULL;
uschar *local_servers = NULL;
-uschar *server;
const uschar *list;
-uschar buffer[512];
while (isspace(*url)) url++;
&defer_break, user, password, sizelimit, timelimit, tcplimit, dereference,
referrals);
-/* Loop through the default servers until OK or FAIL. Use local_servers list
- * if defined in the lookup, otherwise use the global default list */
-list = !local_servers ? eldap_default_servers : local_servers;
-while ((server = string_nextinlist(&list, &sep, buffer, sizeof(buffer))))
+/* Loop through the servers until OK or FAIL. Use local_servers list
+if defined in the lookup, otherwise use the global default list */
+
+list = local_servers ? local_servers : eldap_default_servers;
+for (uschar * server; server = string_nextinlist(&list, &sep, NULL, 0); )
{
- int rc;
- int port = 0;
+ int rc, port = 0;
uschar *colon = Ustrchr(server, ':');
if (colon)
{
r1:
driver = redirect
- data = ${lookup ldap user="cn=xxx,o=yyy,c=UK" pass="secret" \
+ data = ${lookup ldap {USER="cn=xxx,o=yyy,c=UK" PASS="secret" \
ldap:///o=zzz,c=UK,?sn?sub?(cn=foo)}}