]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/root_dse.c
NVALUES: fix a couple of value_find_ex() calls
[openldap] / servers / slapd / root_dse.c
index bb8e5ed8c535de8b6ce59728c0e888a75db31e8a..90a7193467000c2842476fe11abb1bd7c5aa0f20 100644 (file)
@@ -137,7 +137,7 @@ root_dse_info(
                        }
                        continue;
                }
-               if ( backends[i].be_flags & SLAP_BFLAG_GLUE_SUBORDINATE ) {
+               if ( SLAP_GLUE_SUBORDINATE( &backends[i] ) ) {
                        continue;
                }
                for ( j = 0; backends[i].be_suffix[j].bv_val != NULL; j++ ) {
@@ -298,6 +298,7 @@ int read_root_dse_file( const char *fname )
                Debug( LDAP_DEBUG_ANY,
                        "read_root_dse_file: SLAP_CALLOC failed", 0, 0, 0 );
 #endif
+               fclose( fp );
                return LDAP_OTHER;
        }
        usr_attr->e_attrs = NULL;
@@ -309,9 +310,8 @@ int read_root_dse_file( const char *fname )
                if( e == NULL ) {
                        fprintf( stderr, "root_dse: could not parse entry (line=%d)\n",
                                lineno );
-                       entry_free( usr_attr );
-                       usr_attr = NULL;
-                       return EXIT_FAILURE;
+                       rc = EXIT_FAILURE;
+                       break;
                }
 
                /* make sure the DN is the empty DN */
@@ -320,9 +320,8 @@ int read_root_dse_file( const char *fname )
                                "root_dse: invalid rootDSE - dn=\"%s\" (line=%d)\n",
                                e->e_dn, lineno );
                        entry_free( e );
-                       entry_free( usr_attr );
-                       usr_attr = NULL;
-                       return EXIT_FAILURE;
+                       rc = EXIT_FAILURE;
+                       break;
                }
 
                /*
@@ -338,15 +337,24 @@ int read_root_dse_file( const char *fname )
                        if( attr_merge( usr_attr, a->a_desc, a->a_vals ) )
 #endif
                        {
-                               return LDAP_OTHER;
+                               rc = LDAP_OTHER;
+                               break;
                        }
                }
 
                entry_free( e );
+               if (rc) break;
+       }
+
+       if (rc) {
+               entry_free( usr_attr );
+               usr_attr = NULL;
        }
 
        ch_free( buf );
 
+       fclose( fp );
+
        Debug(LDAP_DEBUG_CONFIG, "rootDSE file %s read.\n", fname, 0, 0);
        return rc;
 }