From: Kurt Zeilenga Date: Tue, 29 Apr 2003 03:21:40 +0000 (+0000) Subject: Apply filter index bug fix to ldbm (from HEAD) X-Git-Tag: OPENLDAP_REL_ENG_2_1_18~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cdd84c34832d5c33af3c0b77bcdcb289f81a204f;p=thirdparty%2Fopenldap.git Apply filter index bug fix to ldbm (from HEAD) --- diff --git a/CHANGES b/CHANGES index 58606be69b..6e95e9d6cd 100644 --- a/CHANGES +++ b/CHANGES @@ -8,7 +8,7 @@ OpenLDAP 2.1.18 Engineering Fixed slapd ACL group DN crash (ITS#2467) Fixed slapd substring normalization bug (ITS#2468) Fixed back-bdb search filter empty value bug (ITS#2453) - Fixed back-bdb filter index computed/undefined bugs (ITS#2449) + Fixed back-bdb/ldbm filter index computed/undefined bugs (ITS#2449) Fixed SASL interactive free bug (ITS#2423) Fixed libldap ldap_host_connected_to portability bug (ITS#2459) Fixed liblber multi-value decode bug (ITS#2458) diff --git a/servers/slapd/back-ldbm/filterindex.c b/servers/slapd/back-ldbm/filterindex.c index ff07968cd9..c7e6792552 100644 --- a/servers/slapd/back-ldbm/filterindex.c +++ b/servers/slapd/back-ldbm/filterindex.c @@ -47,6 +47,23 @@ filter_candidates( result = NULL; switch ( f->f_choice ) { + case SLAPD_FILTER_COMPUTED: + switch( f->f_result ) { + case SLAPD_COMPARE_UNDEFINED: + /* This technically is not the same as FALSE, but it + * certainly will produce no matches. list_candidates + * will take care of ignoring this filter. + */ + /* FALLTHRU */ + case LDAP_COMPARE_FALSE: + result = NULL; + break; + case LDAP_COMPARE_TRUE: + result = idl_allids( be ); + break; + } + break; + case SLAPD_FILTER_DN_ONE: #ifdef NEW_LOGGING LDAP_LOG( FILTER, DETAIL1, @@ -692,6 +709,10 @@ list_candidates( idl = NULL; for ( f = flist; f != NULL; f = f->f_next ) { + if ( f->f_choice == SLAPD_FILTER_COMPUTED && + f->f_result == SLAPD_COMPARE_UNDEFINED ) { + continue; + } if ( (tmp = filter_candidates( be, f )) == NULL && ftype == LDAP_FILTER_AND ) { #ifdef NEW_LOGGING