From: Howard Chu Date: Tue, 13 May 2025 16:22:28 +0000 (+0100) Subject: ITS#10336 slapd-mdb: fix delete on empty DB X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7a8d72b02bcf8af4f056d66cac98ffafa21a5fdb;p=thirdparty%2Fopenldap.git ITS#10336 slapd-mdb: fix delete on empty DB Don't assume parent of target entry will always exist. --- diff --git a/servers/slapd/back-mdb/delete.c b/servers/slapd/back-mdb/delete.c index 186127b179..f1d2be9e51 100644 --- a/servers/slapd/back-mdb/delete.c +++ b/servers/slapd/back-mdb/delete.c @@ -148,17 +148,18 @@ mdb_delete( Operation *op, SlapReply *rs ) "<=- " LDAP_XSTRING(mdb_delete) ": no such object %s\n", op->o_req_dn.bv_val ); - rs->sr_matched = ch_strdup( e->e_dn ); - if ( is_entry_referral( e )) { - BerVarray ref = get_entry_referrals( op, e ); - rs->sr_ref = referral_rewrite( ref, &e->e_name, - &op->o_req_dn, LDAP_SCOPE_DEFAULT ); - ber_bvarray_free( ref ); - } else { - rs->sr_ref = NULL; + rs->sr_ref = NULL; + if ( e ) { + rs->sr_matched = ch_strdup( e->e_dn ); + if ( is_entry_referral( e )) { + BerVarray ref = get_entry_referrals( op, e ); + rs->sr_ref = referral_rewrite( ref, &e->e_name, + &op->o_req_dn, LDAP_SCOPE_DEFAULT ); + ber_bvarray_free( ref ); + } + mdb_entry_return( op, e ); + e = NULL; } - mdb_entry_return( op, e ); - e = NULL; rs->sr_err = LDAP_REFERRAL; rs->sr_flags = REP_MATCHED_MUSTBEFREED | REP_REF_MUSTBEFREED;