]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/mods.c
ITS#6467, use memcpy instead for strcpy when copying across array
[openldap] / servers / slapd / mods.c
index 328d69b53be4f90beb01fb203755857930bd1814..c8d8b9c9e29a27b0116a7768466c84d75b167b58 100644 (file)
@@ -99,7 +99,13 @@ modify_add_values(
                 * server (whether from LDAP or from the underlying
                 * database).
                 */
-               flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX;
+               if ( a->a_desc == slap_schema.si_ad_objectClass ) {
+                       /* Needed by ITS#5517 */
+                       flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX;
+
+               } else {
+                       flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX;
+               }
                if ( mod->sm_nvalues ) {
                        flags |= SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH |
                                SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH;
@@ -257,13 +263,18 @@ modify_delete_vindex(
                goto return_result;
        }
 
+       if ( a->a_desc == slap_schema.si_ad_objectClass ) {
+               /* Needed by ITS#5517,ITS#5963 */
+               flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX;
+
+       } else {
+               flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX;
+       }
        if ( mod->sm_nvalues ) {
-               flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX
-                       | SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH
+               flags |= SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH
                        | SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH;
                cvals = mod->sm_nvalues;
        } else {
-               flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX;
                cvals = mod->sm_values;
        }