[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#6462) DNS SRV records: ldaps ???

Full_Name: Jochen Keutel
Version: 2.4.21
OS: Solaris 10
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (

The code for detecting LDAP servers via DNS SRV records seems to handle only
ldap URLs - not ldaps URLs.

Esp.: If you access an OpenLDAP server with ldaps://host1/..., then the DNS SRV
code returns a URL like ldap://host2/... . So the LDAP server chains the
original ldaps request as a LDAP query without TLS.

This gets problematic when the (company / project) requirements clearly state
that only ldaps has to be used ...

The problematic code seems to be in libraries/libldap/dnssrv.c, function

request = LDAP_MALLOC(strlen(domain) + sizeof("_ldap._tcp."));
sprintf(request, "_ldap._tcp.%s", domain);

So always "_ldap._tcp" is used (hard coded) - not "ldaps._tcp" in case of ldaps
in the original query.

I'd suggest to introduce a third parameter to that function:

int ldap_domain2hostlist(
	LDAP_CONST char *protocol,
	LDAP_CONST char *domain,
	char **list )

protocol is either "ldap" oder "ldaps".

The code calling this function (slapd/back-dnssrv/search.c and referral.c) has
to be adjusted as well.

I'm not sure whether you want me to deliver a complete patch or not ... 

Thanks to my colleague Manuel Gaupp for detecting this problem.

Best regards,  Jochen.