From 37e8e5a237bb870d50f5f37da2c614aea057726f Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Sat, 14 Feb 2009 11:11:24 +0000 Subject: [PATCH] consistently map operational attrs as well (ITS#5760); silence warning --- servers/slapd/overlays/rwm.c | 114 +++++++++++++++++------------------ 1 file changed, 54 insertions(+), 60 deletions(-) diff --git a/servers/slapd/overlays/rwm.c b/servers/slapd/overlays/rwm.c index b07b7e18a4..f0d93ed27a 100644 --- a/servers/slapd/overlays/rwm.c +++ b/servers/slapd/overlays/rwm.c @@ -1197,76 +1197,70 @@ rwm_attrs( Operation *op, SlapReply *rs, Attribute** a_first, int stripEntryDN ) int last = -1; Attribute *a; - if ( SLAP_OPATTRS( rs->sr_attr_flags ) && is_at_operational( (*ap)->a_desc->ad_type ) ) + if ( op->ors_attrs != NULL && + !SLAP_USERATTRS( rs->sr_attr_flags ) && + !ad_inlist( (*ap)->a_desc, op->ors_attrs ) ) { - /* go on */ ; - - } else { - if ( op->ors_attrs != NULL && - !SLAP_USERATTRS( rs->sr_attr_flags ) && - !ad_inlist( (*ap)->a_desc, op->ors_attrs ) ) - { - goto cleanup_attr; - } + goto cleanup_attr; + } - drop_missing = rwm_mapping( &rwmap->rwm_at, - &(*ap)->a_desc->ad_cname, &mapping, RWM_REMAP ); - if ( drop_missing || ( mapping != NULL && BER_BVISEMPTY( &mapping->m_dst ) ) ) - { - goto cleanup_attr; - } - if ( mapping != NULL ) { - assert( mapping->m_dst_ad != NULL ); + drop_missing = rwm_mapping( &rwmap->rwm_at, + &(*ap)->a_desc->ad_cname, &mapping, RWM_REMAP ); + if ( drop_missing || ( mapping != NULL && BER_BVISEMPTY( &mapping->m_dst ) ) ) + { + goto cleanup_attr; + } + if ( mapping != NULL ) { + assert( mapping->m_dst_ad != NULL ); - /* try to normalize mapped Attributes if the original - * AttributeType was not normalized */ - if ( (!(*ap)->a_desc->ad_type->sat_equality || - !(*ap)->a_desc->ad_type->sat_equality->smr_normalize) && - mapping->m_dst_ad->ad_type->sat_equality && - mapping->m_dst_ad->ad_type->sat_equality->smr_normalize ) + /* try to normalize mapped Attributes if the original + * AttributeType was not normalized */ + if ( (!(*ap)->a_desc->ad_type->sat_equality || + !(*ap)->a_desc->ad_type->sat_equality->smr_normalize) && + mapping->m_dst_ad->ad_type->sat_equality && + mapping->m_dst_ad->ad_type->sat_equality->smr_normalize ) + { + if ((rwmap->rwm_flags & RWM_F_NORMALIZE_MAPPED_ATTRS)) { - if ((rwmap->rwm_flags & RWM_F_NORMALIZE_MAPPED_ATTRS)) + int i = 0; + + last = (*ap)->a_numvals; + if ( last ) { - int i = 0; - - last = (*ap)->a_numvals; - if ( last ) - { - (*ap)->a_nvals = ch_malloc( (last+1) * sizeof(struct berval) ); - - for ( i = 0; !BER_BVISNULL( &(*ap)->a_vals[i]); i++ ) { - int rc; - /* - * check that each value is valid per syntax - * and pretty if appropriate - */ - rc = mapping->m_dst_ad->ad_type->sat_equality->smr_normalize( - SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX, - mapping->m_dst_ad->ad_type->sat_syntax, - mapping->m_dst_ad->ad_type->sat_equality, - &(*ap)->a_vals[i], &(*ap)->a_nvals[i], - NULL ); - - if ( rc != LDAP_SUCCESS ) { - BER_BVZERO( &(*ap)->a_nvals[i] ); - } + (*ap)->a_nvals = ch_malloc( (last+1) * sizeof(struct berval) ); + + for ( i = 0; !BER_BVISNULL( &(*ap)->a_vals[i]); i++ ) { + int rc; + /* + * check that each value is valid per syntax + * and pretty if appropriate + */ + rc = mapping->m_dst_ad->ad_type->sat_equality->smr_normalize( + SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX, + mapping->m_dst_ad->ad_type->sat_syntax, + mapping->m_dst_ad->ad_type->sat_equality, + &(*ap)->a_vals[i], &(*ap)->a_nvals[i], + NULL ); + + if ( rc != LDAP_SUCCESS ) { + BER_BVZERO( &(*ap)->a_nvals[i] ); } - BER_BVZERO( &(*ap)->a_nvals[i] ); } - - } else { - assert( (*ap)->a_nvals == (*ap)->a_vals ); - (*ap)->a_nvals = NULL; - ber_bvarray_dup_x( &(*ap)->a_nvals, (*ap)->a_vals, NULL ); + BER_BVZERO( &(*ap)->a_nvals[i] ); } + + } else { + assert( (*ap)->a_nvals == (*ap)->a_vals ); + (*ap)->a_nvals = NULL; + ber_bvarray_dup_x( &(*ap)->a_nvals, (*ap)->a_vals, NULL ); } + } - /* rewrite the attribute description */ - (*ap)->a_desc = mapping->m_dst_ad; + /* rewrite the attribute description */ + (*ap)->a_desc = mapping->m_dst_ad; - /* will need to check for duplicate attrs */ - check_duplicate_attrs++; - } + /* will need to check for duplicate attrs */ + check_duplicate_attrs++; } if ( (*ap)->a_desc == slap_schema.si_ad_entryDN ) { @@ -1951,7 +1945,7 @@ static int rwm_bva_rewrite_add( struct ldaprwmap *rwmap, int idx, - const char *argv[] ) + char **argv ) { char *line; struct berval bv; -- 2.39.5