]> git.sur5r.net Git - openldap/commitdiff
Plug leaks. (benign. slap_controls and root_dse need a destroy() still,
authorHoward Chu <hyc@openldap.org>
Fri, 14 Mar 2003 09:37:27 +0000 (09:37 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 14 Mar 2003 09:37:27 +0000 (09:37 +0000)
also still need to clear mr's from the ad_map.)

servers/slapd/mr.c
servers/slapd/root_dse.c

index 0a7fe04f4a3e57ffbf23d2b6632172f6ea47ae03..a88a47b17058fe40c70797cb145d5db885b6cb43 100644 (file)
@@ -84,6 +84,7 @@ mr_destroy( void )
                m = LDAP_SLIST_FIRST(&mr_list);
                LDAP_SLIST_REMOVE_HEAD(&mr_list, smr_next);
                ch_free( m->smr_str.bv_val );
+               ch_free( m->smr_compat_syntaxes );
                ldap_matchingrule_free((LDAPMatchingRule *)m);
        }
 }
index 5ab1467bc147da11f34c90817f2750edd2a32121..90a7193467000c2842476fe11abb1bd7c5aa0f20 100644 (file)
@@ -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;
 }