From 44c291226d4c72b190c0983a8999c98cf4bf8baa Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Fri, 26 Aug 2011 18:23:54 -0700 Subject: [PATCH] Plug memleak --- servers/slapd/back-mdb/id2entry.c | 13 ++++++++++--- servers/slapd/back-mdb/libmdb | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) 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 -- 2.47.2