diff --git a/servers/slapd/back-mdb/delete.c b/servers/slapd/back-mdb/delete.c index 30edd4ec27..da6d066569 100644 --- a/servers/slapd/back-mdb/delete.c +++ b/servers/slapd/back-mdb/delete.c @@ -136,19 +136,19 @@ txnReturn: "<=- " LDAP_XSTRING(mdb_delete) ": no such object %s\n", op->o_req_dn.bv_val, 0, 0); - if ( !BER_BVISEMPTY( &p->e_name )) { + if ( p && !BER_BVISEMPTY( &p->e_name )) { rs->sr_matched = ch_strdup( p->e_name.bv_val ); - rs->sr_ref = ( p && is_entry_referral( p )) + rs->sr_ref = ( is_entry_referral( p )) ? get_entry_referrals( op, p ) : NULL; - if ( p ) { - mdb_entry_return( p ); - p = NULL; - } } else { rs->sr_ref = referral_rewrite( default_referral, NULL, &op->o_req_dn, LDAP_SCOPE_DEFAULT ); } + if ( p ) { + mdb_entry_return( p ); + p = NULL; + } rs->sr_err = LDAP_REFERRAL; rs->sr_flags = REP_MATCHED_MUSTBEFREED | REP_REF_MUSTBEFREED;