]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/mra.c
ITS#2368 - fix deleting key from range IDL
[openldap] / servers / slapd / mra.c
index 5276c546e6700f1ac32a1411c2e6fc67dd8b941b..a8f2d7fcfd87f14f0832e85f3d843867cbe0ec93 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /* mra.c - routines for dealing with extensible matching rule assertions */
@@ -218,6 +218,7 @@ get_mra(
                        return LDAP_INAPPROPRIATE_MATCHING;
                }
 
+#ifndef SLAP_NVALUES
                /*
                 * OK, if no matching rule, normalize for equality, otherwise
                 * normalize for the matching rule.
@@ -232,8 +233,21 @@ get_mra(
                if ( rc == LDAP_SUCCESS ) {
                        ber_dupbv( &ma->ma_value, &value );
                }
+#endif
+       }
 
+#ifdef SLAP_NVALUES
+       /*
+        * Normalize per matching rule
+        */
+       rc = asserted_value_validate_normalize( ma->ma_desc,
+               ma->ma_rule,
+               SLAP_MR_EXT|SLAP_MR_VALUE_OF_ASSERTION_SYNTAX,
+               &ma->ma_value, &value, text );
+       if ( rc == LDAP_SUCCESS ) {
+               ber_dupbv( &ma->ma_value, &value );
        }
+#endif
 
        if( rc != LDAP_SUCCESS ) {
                mra_free( ma, 1 );