[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
ldap_url_search fails when URL does not specify host (ldap:///) (ITS#843)
Full_Name: Brian Candler
Version: 2.0.6
OS: FreeBSD-4.1
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (212.74.96.2)
If you explicitly open a connection to a particular host, but then give a URL
without a host to ldap_url_search, the search fails (error 81,
LDAP_SERVER_DOWN)
Demonstration: the program below fails with the first version of #define URL,
but works with the second version of #define URL.
------------------------------------------------------------------
#include <stdio.h>
#include <ldap.h>
#define HOST "10.0.0.1"
#define URL "ldap:///o=whatever,c=GB??sub?(objectclass=*)"
/* #define URL "ldap://10.0.0.1/o=whatever,c=GB??sub?(objectclass=*)" */
int main(void)
{
LDAP *ld = ldap_open(HOST, 389);
LDAPMessage *result;
int r1, r2;
int errorno;
r1 = ldap_url_search(ld, URL, 0);
if (r1 == -1) {
char *error;
ldap_get_option(ld, LDAP_OPT_ERROR_STRING, &error);
fprintf(stderr, "Error in ldap_url_search: %s\n", error?error:"NULL");
ldap_get_option(ld, LDAP_OPT_ERROR_NUMBER, &errorno);
fprintf(stderr, "Error in ldap_url_search: %d\n", errorno);
return 1;
}
r2 = ldap_result(ld, LDAP_RES_ANY, 1, NULL, &result);
if (r2 == -1) {
char *error;
ldap_get_option(ld, LDAP_OPT_ERROR_STRING, &error);
fprintf(stderr, "Error in ldap_result: %s\n", error);
return 1;
}
return 0;
}
------------------------------------------------------------------
Gives:
Error in ldap_url_search: NULL
Error in ldap_url_search: 81
Possibly connected: ldap_url_parse now seems to return an
empty string, rather than a null pointer, in lud_host for URLs without
explicit hosts.