Full_Name: Johannes Weißl
Version: HEAD
OS: Debian GNU/Linux AMD64
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (93.104.127.153)


This is only a minor issue:

When URI is e.g. ldapi:// in ldap.conf and ldap_get_option() for
LDAP_OPT_HOST_NAME is called, ldap_url_list2hosts() [url.c:1416] segfaults
because the lud_host field in LDAPURLDesc is NULL. Adding an additional test in
the loop header fixes this bug:

diff -Naur openldap/libraries/libldap/url.c
openldap.new/libraries/libldap/url.c
--- openldap/libraries/libldap/url.c    2010-04-13 22:17:57.000000000 +0200
+++ openldap.new/libraries/libldap/url.c        2010-09-20 22:44:58.325892001 
+0200
@@ -1424,7 +1424,7 @@
 
        /* figure out how big the string is */
        size = 1;       /* nul-term */
-       for (ludp = ludlist; ludp != NULL; ludp = ludp->lud_next) {
+       for (ludp = ludlist; ludp != NULL && ludp->lud_host != NULL; ludp =
ludp->lud_next) {
                size += strlen(ludp->lud_host) + 1;             /* host and 
space */
                if (strchr(ludp->lud_host, ':'))        /* will add [ ] below */
                        size += 2;
@@ -1436,7 +1436,7 @@
                return NULL;
 
        p = s;
-       for (ludp = ludlist; ludp != NULL; ludp = ludp->lud_next) {
+       for (ludp = ludlist; ludp != NULL && ludp->lud_host != NULL; ludp =
ludp->lud_next) {
                if (strchr(ludp->lud_host, ':')) {
                        p += sprintf(p, "[%s]", ludp->lud_host);
                } else {

Reply via email to