]> git.sur5r.net Git - openldap/commitdiff
Fix MAJOR memory leak.
authorKurt Zeilenga <kurt@openldap.org>
Thu, 19 Aug 1999 18:16:04 +0000 (18:16 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Thu, 19 Aug 1999 18:16:04 +0000 (18:16 +0000)
servers/slapd/entry.c

index 8d6631d536d7369fc4fc1f44dd40f6af057c39cf..849aece201a9fe8183010004612b3a3fe950908b 100644 (file)
@@ -99,14 +99,17 @@ str2entry( char *s )
                }
 
                if ( strcasecmp( type, "dn" ) == 0 ) {
+                       free( type );
+
                        if ( e->e_dn != NULL ) {
                                Debug( LDAP_DEBUG_ANY,
  "str2entry: entry %ld has multiple dns \"%s\" and \"%s\" (second ignored)\n",
                                    e->e_id, e->e_dn,
                                        value != NULL ? value : NULL );
+                               if( value != NULL ) free( value );
                                continue;
                        }
-                       e->e_dn = ch_strdup( value != NULL ? value : "" );
+                       e->e_dn = value != NULL ? value : ch_strdup( "" );
 
                        if ( e->e_ndn != NULL ) {
                                Debug( LDAP_DEBUG_ANY,
@@ -127,8 +130,13 @@ str2entry( char *s )
                        Debug( LDAP_DEBUG_TRACE,
                            "<= str2entry NULL (attr_merge)\n", 0, 0, 0 );
                        entry_free( e );
+                       free( value );
+                       free( type );
                        return( NULL );
                }
+
+               free( value );
+               free( type );
                nvals++;
        }