diff --git a/CHANGES b/CHANGES index afe35295fb84874dd1ff4d12439bd951ff40b31e..8be3b2efb76e8353e7d5eaf5194c15b6b9444eca 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,7 @@ OpenLDAP 2.4.17 Engineering Fixed slapd normalization of updated schema attributes (ITS#5540) Fixed slapd pagedresults stacked control with overlays (ITS#6056) Fixed slapd sockets usage on windows (ITS#6039) + Fixed slapd-bdb freeing of already freed entries (ITS#6074) Added slapo-rwm rwm-drop-unrequested-attrs config option (ITS#6057) Fixed slapo-rwm dn passing (ITS#6070) Fixed slapo-rwm entry free (ITS#6058) diff --git a/servers/slapd/back-bdb/cache.c b/servers/slapd/back-bdb/cache.c index e54408d65965515fb1edfc7cc499b294d8cf26f0..02f5554e22988c27b0371fce34e4c2715749739b 100644 --- a/servers/slapd/back-bdb/cache.c +++ b/servers/slapd/back-bdb/cache.c @@ -1345,6 +1345,9 @@ bdb_cache_delete_cleanup( { /* Enter with ei locked */ + /* already freed? */ + if ( !ei->bei_parent ) return; + if ( ei->bei_e ) { ei->bei_e->e_private = NULL; #ifdef SLAP_ZONE_ALLOC @@ -1368,6 +1371,10 @@ bdb_cache_delete_internal( int rc = 0; /* return code */ int decr_leaf = 0; + /* already freed? */ + if ( !e->bei_parent ) + return -1; + /* Lock the parent's kids tree */ bdb_cache_entryinfo_lock( e->bei_parent );