/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 1999-2006 The OpenLDAP Foundation.
+ * Copyright 1999-2007 The OpenLDAP Foundation.
* Portions Copyright 1999-2003 Howard Chu.
* Portions Copyright 2000-2003 Pierangelo Masarati.
* All rights reserved.
{
struct ldapmapping *mapping;
+ /* map->map may be NULL when mapping is configured,
+ * but map->remap can't */
+ if ( map->remap == NULL ) {
+ *bv = *s;
+ return;
+ }
+
BER_BVZERO( bv );
( void )rwm_mapping( map, s, &mapping, remap );
if ( mapping != NULL ) {
{
int i;
Filter *p;
+ AttributeDescription *ad;
struct berval atmp,
vtmp,
*tmp;
return LDAP_OTHER;
}
- switch ( f->f_choice ) {
+ switch ( f->f_choice & SLAPD_FILTER_MASK ) {
case LDAP_FILTER_EQUALITY:
- if ( map_attr_value( dc, &f->f_av_desc, &atmp,
+ ad = f->f_av_desc;
+ if ( map_attr_value( dc, &ad, &atmp,
&f->f_av_value, &vtmp, RWM_MAP ) )
{
goto computed;
break;
case LDAP_FILTER_GE:
- if ( map_attr_value( dc, &f->f_av_desc, &atmp,
+ ad = f->f_av_desc;
+ if ( map_attr_value( dc, &ad, &atmp,
&f->f_av_value, &vtmp, RWM_MAP ) )
{
goto computed;
break;
case LDAP_FILTER_LE:
- if ( map_attr_value( dc, &f->f_av_desc, &atmp,
+ ad = f->f_av_desc;
+ if ( map_attr_value( dc, &ad, &atmp,
&f->f_av_value, &vtmp, RWM_MAP ) )
{
goto computed;
break;
case LDAP_FILTER_APPROX:
- if ( map_attr_value( dc, &f->f_av_desc, &atmp,
+ ad = f->f_av_desc;
+ if ( map_attr_value( dc, &ad, &atmp,
&f->f_av_value, &vtmp, RWM_MAP ) )
{
goto computed;
break;
case LDAP_FILTER_SUBSTRINGS:
- if ( map_attr_value( dc, &f->f_sub_desc, &atmp,
+ ad = f->f_sub_desc;
+ if ( map_attr_value( dc, &ad, &atmp,
NULL, NULL, RWM_MAP ) )
{
goto computed;
break;
case LDAP_FILTER_PRESENT:
- if ( map_attr_value( dc, &f->f_desc, &atmp,
+ ad = f->f_desc;
+ if ( map_attr_value( dc, &ad, &atmp,
NULL, NULL, RWM_MAP ) )
{
goto computed;
case LDAP_FILTER_EXT: {
if ( f->f_mr_desc ) {
- if ( map_attr_value( dc, &f->f_mr_desc, &atmp,
+ ad = f->f_mr_desc;
+ if ( map_attr_value( dc, &ad, &atmp,
&f->f_mr_value, &vtmp, RWM_MAP ) )
{
goto computed;
break;
}
- case 0:
+ case -1:
computed:;
filter_free_x( op, f );
f->f_choice = SLAPD_FILTER_COMPUTED;