mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-26 01:29:59 -05:00
ITS#2453 - Handle computed filters, ignore Undefined filters.
This commit is contained in:
parent
792e97790d
commit
169c7afcdf
1 changed files with 21 additions and 0 deletions
|
|
@ -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( op->o_bd );
|
||||
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( op, f )) == NULL &&
|
||||
ftype == LDAP_FILTER_AND ) {
|
||||
#ifdef NEW_LOGGING
|
||||
|
|
|
|||
Loading…
Reference in a new issue