diff --git a/servers/slapd/overlays/dynlist.c b/servers/slapd/overlays/dynlist.c index cbb3d129f5..9519f97199 100644 --- a/servers/slapd/overlays/dynlist.c +++ b/servers/slapd/overlays/dynlist.c @@ -1699,16 +1699,19 @@ dynlist_search( Operation *op, SlapReply *rs ) if ( dlm->dlm_memberOf_ad ) { int want = 0; - /* with nesting, filter attributes also require nestlink */ - if ( dlm->dlm_memberOf_nested ) { + /* is attribute in filter? */ + if ( ad_infilter( dlm->dlm_memberOf_ad, op->ors_filter )) { + want |= WANT_MEMBEROF; + /* with nesting, filter attributes also require nestlink */ + if ( dlm->dlm_memberOf_nested ) { /* WANT_ flags have inverted meaning here: * to satisfy (memberOf=) filter, we need to also * find all subordinate groups. No special * treatment is needed for (member=) since we * already search all group entries. */ - if ( ad_infilter( dlm->dlm_memberOf_ad, op->ors_filter )) want |= WANT_MEMBER; + } } /* if attribute is not requested, skip it */