summaryrefslogtreecommitdiff
path: root/contrib/sendmail/libsm/ldap.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/libsm/ldap.c')
-rw-r--r--contrib/sendmail/libsm/ldap.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/contrib/sendmail/libsm/ldap.c b/contrib/sendmail/libsm/ldap.c
index 5e6557ddd58ba..3af7ffab01cdb 100644
--- a/contrib/sendmail/libsm/ldap.c
+++ b/contrib/sendmail/libsm/ldap.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001-2004 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 2001-2005 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -8,7 +8,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: ldap.c,v 1.60 2004/08/03 20:42:21 ca Exp $")
+SM_RCSID("@(#)$Id: ldap.c,v 1.62 2005/02/24 00:30:01 ca Exp $")
#if LDAPMAP
# include <sys/types.h>
@@ -589,7 +589,9 @@ sm_ldap_results(lmap, msgid, flags, delim, rpool, result,
LDAPMessage *entry;
/* If we don't want multiple values and we have one, break */
- if ((char) delim == '\0' && *result != NULL)
+ if ((char) delim == '\0' &&
+ !bitset(SM_LDAP_SINGLEMATCH, flags) &&
+ *result != NULL)
break;
/* Cycle through all entries */
@@ -767,19 +769,17 @@ sm_ldap_results(lmap, msgid, flags, delim, rpool, result,
if (*result != NULL)
{
/* already have a value */
+ if (bitset(SM_LDAP_SINGLEMATCH,
+ flags))
+ {
+ /* only wanted one match */
+ SM_LDAP_ERROR_CLEANUP();
+ errno = ENOENT;
+ return EX_NOTFOUND;
+ }
break;
}
- if (bitset(SM_LDAP_SINGLEMATCH,
- flags) &&
- *result != NULL)
- {
- /* only wanted one match */
- SM_LDAP_ERROR_CLEANUP();
- errno = ENOENT;
- return EX_NOTFOUND;
- }
-
if (lmap->ldap_attrsonly == LDAPMAP_TRUE)
{
*result = sm_rpool_strdup_x(rpool,
@@ -990,7 +990,9 @@ sm_ldap_results(lmap, msgid, flags, delim, rpool, result,
}
/* We don't want multiple values and we have one */
- if ((char) delim == '\0' && *result != NULL)
+ if ((char) delim == '\0' &&
+ !bitset(SM_LDAP_SINGLEMATCH, flags) &&
+ *result != NULL)
break;
}
save_errno = sm_ldap_geterrno(lmap->ldap_ld);