]> git.sur5r.net Git - openldap/commitdiff
SLAP_NVALUES - a_nvals is useless if ma_rule isn't the same as attr's.
authorHoward Chu <hyc@openldap.org>
Mon, 24 Mar 2003 02:16:42 +0000 (02:16 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 24 Mar 2003 02:16:42 +0000 (02:16 +0000)
servers/slapd/filterentry.c

index 935358373d375e3e85f31739b27958cc92e1bb82..4912d52dc907fd5d1bda082479a02c3e3637247a 100644 (file)
@@ -233,10 +233,14 @@ static int test_mra_filter(
                {
                        struct berval *bv;
 #ifdef SLAP_NVALUES
-                       bv = a->a_nvals;
-#else
-                       bv = a->a_vals;
+                       /* If ma_rule is not the same as the attribute's
+                        * normal rule, then we can't use the a_nvals.
+                        */
+                       if (mra->ma_rule == a->a_desc->ad_type->sat_equality)
+                               bv = a->a_nvals;
+                       else
 #endif
+                               bv = a->a_vals;
                        for ( ; bv->bv_val != NULL; bv++ )
                        {
                                int ret;
@@ -292,10 +296,12 @@ static int test_mra_filter(
 
                        /* check match */
 #ifdef SLAP_NVALUES
-                       for ( bv = a->a_nvals; bv->bv_val != NULL; bv++ )
-#else
-                       for ( bv = a->a_vals; bv->bv_val != NULL; bv++ )
+                       if (mra->ma_rule == a->a_desc->ad_type->sat_equality)
+                               bv = a->a_nvals;
+                       else
 #endif
+                               bv = a->a_vals;
+                       for ( ; bv->bv_val != NULL; bv++ )
                        {
                                int ret;
                                int rc;