From: Pierangelo Masarati Date: Thu, 27 Dec 2007 20:57:42 +0000 (+0000) Subject: if referential integrity is broken, things could go wrong; don't assert X-Git-Tag: OPENLDAP_REL_ENG_2_4_9~20^2~269 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=ce43877f6fb0c0b4dca129cee28c0233bc037966;p=openldap if referential integrity is broken, things could go wrong; don't assert --- diff --git a/servers/slapd/overlays/memberof.c b/servers/slapd/overlays/memberof.c index 9ca4c86856..45c388650d 100644 --- a/servers/slapd/overlays/memberof.c +++ b/servers/slapd/overlays/memberof.c @@ -264,6 +264,7 @@ memberof_saveMember_cb( Operation *op, SlapReply *rs ) if ( rs->sr_type == REP_SEARCH ) { memberof_cookie_t *mc; Attribute *a; + BerVarray vals = NULL; mc = (memberof_cookie_t *)op->o_callback->sc_private; mc->foundit = 1; @@ -272,12 +273,13 @@ memberof_saveMember_cb( Operation *op, SlapReply *rs ) assert( rs->sr_entry->e_attrs != NULL ); a = attr_find( rs->sr_entry->e_attrs, mc->ad ); + if ( a != NULL ) { + vals = a->a_nvals; + } - assert( a != NULL ); - - memberof_saved_member_set( op, mc->key, a->a_nvals ); + memberof_saved_member_set( op, mc->key, vals ); - if ( attr_find( a->a_next, mc->ad ) != NULL ) { + if ( a && attr_find( a->a_next, mc->ad ) != NULL ) { Debug( LDAP_DEBUG_ANY, "%s: memberof_saveMember_cb(\"%s\"): " "more than one occurrence of \"%s\" "