]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/daemon.c
Add error handling to BDB_INDEX code
[openldap] / servers / slapd / daemon.c
index 461e949c1857e43deb04c42ea0d33d645d2c1065..72fc0b2706be056e5dad5807c4fa1bbe4ba32b56 100644 (file)
@@ -395,10 +395,22 @@ static int slap_get_listener_addresses(
                        return -1;
                }
 
-               sai = res;
                sap = *sal;
 
-               do {
+               for ( sai=res; sai; sai=sai->ai_next ) {
+                       if( sai->ai_addr == NULL ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
+                                       "slap_get_listener_addresses: "
+                                       "getaddrinfo ai_addr is NULL?\n" ));
+#else
+                               Debug( LDAP_DEBUG_ANY, "slap_get_listener_addresses: "
+                                       "getaddrinfo ai_addr is NULL?\n", 0, 0, 0 );
+#endif
+                               freeaddrinfo(res);
+                               goto errexit;
+                       }
+
                        switch (sai->ai_family) {
 #  ifdef LDAP_PF_INET6
                        case AF_INET6:
@@ -428,7 +440,7 @@ static int slap_get_listener_addresses(
                                (*sap)->sa_family = sai->ai_family;
                                sap++;
                        }
-               } while ((sai = sai->ai_next) != NULL);
+               }
 
                *sap = NULL;
                freeaddrinfo(res);
@@ -559,8 +571,7 @@ static Listener * slap_open_listener(
 #endif
        } else {
 #ifdef LDAP_CONNECTIONLESS
-               if ( tmp == LDAP_PROTO_UDP )
-                       l.sl_is_udp = 1;
+               l.sl_is_udp = ( tmp == LDAP_PROTO_UDP );
 #endif
                if( lud->lud_host == NULL || lud->lud_host[0] == '\0'
                        || strcmp(lud->lud_host, "*") == 0 )