From: Howard Chu Date: Sat, 27 Aug 2011 01:23:54 +0000 (-0700) Subject: Plug memleak X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44c291226d4c72b190c0983a8999c98cf4bf8baa;p=thirdparty%2Fopenldap.git Plug memleak --- diff --git a/servers/slapd/back-mdb/id2entry.c b/servers/slapd/back-mdb/id2entry.c index 4c7e9b6e83..10c6c21648 100644 --- a/servers/slapd/back-mdb/id2entry.c +++ b/servers/slapd/back-mdb/id2entry.c @@ -242,7 +242,8 @@ int mdb_entry_get( Debug( LDAP_DEBUG_ACL, "=> mdb_entry_get: cannot find entry: \"%s\"\n", ndn->bv_val, 0, 0 ); - return LDAP_NO_SUCH_OBJECT; + rc = LDAP_NO_SUCH_OBJECT; + goto return_results; } Debug( LDAP_DEBUG_ACL, @@ -269,10 +270,16 @@ int mdb_entry_get( return_results: if( rc != LDAP_SUCCESS ) { /* free entry */ - mdb_entry_return( e ); + if ( e ) + mdb_entry_return( e ); + if (moi->moi_ref == 1) { + LDAP_SLIST_REMOVE( &op->o_extra, &moi->moi_oe, OpExtra, oe_next ); + mdb_txn_reset( txn ); + op->o_tmpfree( moi, op->o_tmpmemctx ); + } } else { - *ent = entry_dup( e ); + *ent = e; } Debug( LDAP_DEBUG_TRACE, diff --git a/servers/slapd/back-mdb/libmdb b/servers/slapd/back-mdb/libmdb index e4ff4cdcd2..7a48f12cbb 160000 --- a/servers/slapd/back-mdb/libmdb +++ b/servers/slapd/back-mdb/libmdb @@ -1 +1 @@ -Subproject commit e4ff4cdcd26f5c547ccb98caabc97edb43d3d09a +Subproject commit 7a48f12cbbbca1c5781148196e6c621bc776f602