X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fcomponent.c;h=bb66c4cee7bc23a1f230db690e5f664bf5a3c3bd;hb=af866c3b44ba37577671f2bffd482499f4b8bc00;hp=7d74c191117517165366d6db370c2b0367f62629;hpb=5ef410c1f389a5f5432252b981871a52c4277ba2;p=openldap diff --git a/servers/slapd/component.c b/servers/slapd/component.c index 7d74c19111..bb66c4cee7 100644 --- a/servers/slapd/component.c +++ b/servers/slapd/component.c @@ -298,6 +298,26 @@ dup_comp_filter ( return( rc ); } +int +get_aliased_filter_aa ( Operation* op, AttributeAssertion* a_assert, AttributeAliasing* aa, const char** text ) +{ + int rc; + struct berval assert_bv; + ComponentAssertion* ca; + + Debug( LDAP_DEBUG_FILTER, "get_aliased_filter\n", 0, 0, 0 ); + + if ( !aa->aa_cf ) + return LDAP_PROTOCOL_ERROR; + + assert_bv = a_assert->aa_value; + /* + * Duplicate aa->aa_cf to ma->ma_cf by replacing the + * the component assertion value in assert_bv + * Multiple values may be separated with '$' + */ + return dup_comp_filter ( op, &assert_bv, aa->aa_cf, &a_assert->aa_cf ); +} int get_aliased_filter( Operation* op, @@ -1369,4 +1389,11 @@ component_free( ComponentFilter *f ) { free_comp_filter( f ); } +void +free_ComponentData( Attribute *a ) { + if ( a->a_comp_data->cd_mem_op ) + component_destructor( a->a_comp_data->cd_mem_op ); + free ( a->a_comp_data ); + a->a_comp_data = NULL; +} #endif