X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/a85c067ba6c6940512cf57ec213277a370d87e70..4687a69c269ee3f2a7f0625e0147a503fd9d3d0b:/src/src/lookups/ldap.c diff --git a/src/src/lookups/ldap.c b/src/src/lookups/ldap.c index 17c431e5c..90cde6c86 100644 --- a/src/src/lookups/ldap.c +++ b/src/src/lookups/ldap.c @@ -2,10 +2,10 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) The Exim Maintainers 2020 - 2022 */ +/* Copyright (c) The Exim Maintainers 2020 - 2023 */ /* Copyright (c) University of Cambridge 1995 - 2018 */ /* See the file NOTICE for conditions of use and distribution. */ -/* SPDX-License-Identifier: GPL-2.0-only */ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* Many thanks to Stuart Lynne for contributing the original code for this driver. Further contributions from Michael Haardt, Brian Candler, Barry @@ -326,17 +326,19 @@ if (!lcp) g = string_catn(NULL, ldap_url, init_ptr - ldap_url); g = string_fmt_append(g, "//%s:%d/", shost, port); } - string_from_gstring(g); /* Call ldap_initialize() and check the result */ + { + const uschar * s = string_from_gstring(g); - DEBUG(D_lookup) debug_printf_indent("ldap_initialize with URL %s\n", g->s); - if ((rc = ldap_initialize(&ld, CS g->s)) != LDAP_SUCCESS) - { - *errmsg = string_sprintf("ldap_initialize: (error %d) URL \"%s\"\n", - rc, g->s); - goto RETURN_ERROR; - } + DEBUG(D_lookup) debug_printf_indent("ldap_initialize with URL %s\n", s); + if ((rc = ldap_initialize(&ld, CS s)) != LDAP_SUCCESS) + { + *errmsg = string_sprintf("ldap_initialize: (error %d) URL \"%s\"\n", + rc, s); + goto RETURN_ERROR; + } + } store_reset(reset_point); /* Might as well save memory when we can */ @@ -1081,20 +1083,15 @@ control_ldap_search(const uschar *ldap_url, int search_type, uschar **res, uschar **errmsg) { BOOL defer_break = FALSE; -int timelimit = LDAP_NO_LIMIT; -int sizelimit = LDAP_NO_LIMIT; +int timelimit = LDAP_NO_LIMIT, sizelimit = LDAP_NO_LIMIT; int tcplimit = 0; int sep = 0; int dereference = LDAP_DEREF_NEVER; -void* referrals = LDAP_OPT_ON; -const uschar *url = ldap_url; -const uschar *p; -uschar *user = NULL; -uschar *password = NULL; -uschar *local_servers = NULL; -const uschar *list; +void * referrals = LDAP_OPT_ON; +const uschar * url = ldap_url, * p, * list; +uschar * user = NULL, * password = NULL, * local_servers = NULL; -while (isspace(*url)) url++; +Uskip_whitespace(&url); /* Until the string begins "ldap", search for the other parameter settings that are recognized. They are of the form NAME=VALUE, with the value being @@ -1173,7 +1170,7 @@ while (strncmpic(url, US"ldap", 4) != 0) DEBUG(D_lookup) debug_printf_indent("LDAP query error: %s\n", *errmsg); return DEFER; } - while (isspace(*url)) url++; + Uskip_whitespace(&url); continue; } } @@ -1520,8 +1517,8 @@ else { if (Ustrchr(LDAP_DN_QUOTE, c) != NULL) { - Ustrncpy(t, US"%5C", 3); /* insert \ where needed */ - t += 3; /* fall through to check URL */ + memcpy(t, US"%5C", 3); /* insert \ where needed */ + t += 3; /* fall through to check URL */ } if (Ustrchr(URL_NONQUOTE, c) == NULL) /* e.g. ] => %5D */ { @@ -1535,9 +1532,9 @@ else /* Handle the trailing spaces */ - while (*ss++ != 0) + while (*ss++) { - Ustrncpy(t, US"%5C%20", 6); + memcpy(t, US"%5C%20", 6); t += 6; } }