- rc = (mr->smr_normalize)( usage,
- ad->ad_type->sat_syntax,
- mr, in, out );
-
- if( rc != LDAP_SUCCESS ) {
- *text = "unable to normalize value";
- return LDAP_INVALID_SYNTAX;
- }
-
- } else if ( mr->smr_syntax->ssyn_normalize ) {
- rc = (mr->smr_syntax->ssyn_normalize)(
- ad->ad_type->sat_syntax,
- in, out );
-
- if( rc != LDAP_SUCCESS ) {
- *text = "unable to normalize value";
- return LDAP_INVALID_SYNTAX;
- }
-
- } else {
- ber_dupbv( out, in );
- }
-
- return LDAP_SUCCESS;
-}
-
-int
-value_validate_normalize(
- AttributeDescription *ad,
- unsigned usage,
- struct berval *in,
- struct berval *out,
- const char **text )
-{
- int rc;
- MatchingRule *mr = ad_mr( ad, usage );
-
- if( mr == NULL ) {
- *text = "inappropriate matching request";
- return LDAP_INAPPROPRIATE_MATCHING;
- }
-
- if( mr->smr_syntax == NULL ) {
- *text = "no assertion syntax";
- return LDAP_INVALID_SYNTAX;
- }
-
- if( ! mr->smr_syntax->ssyn_validate ) {
- *text = "no syntax validator";
- return LDAP_INVALID_SYNTAX;
- }
-
- rc = (mr->smr_syntax->ssyn_validate)( mr->smr_syntax, in );
-
- if( rc != LDAP_SUCCESS ) {
- *text = "value is invalid";
- return LDAP_INVALID_SYNTAX;
- }
-
- /* we only support equality matching of binary attributes */
- /* This is suspect, flexible certificate matching will hit this */
- if( slap_ad_is_binary( ad ) && usage != SLAP_MR_EQUALITY ) {
- *text = "inappropriate binary matching";
- return LDAP_INAPPROPRIATE_MATCHING;
- }