]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/modrdn.c
fix previous commit (check for co_type==Cft_Overlay before calling
[openldap] / servers / slapd / modrdn.c
index c9171d709bb52e6d5ebd5d5003a64264095b8e40..c2ceab26bb8dad4db878e15be7ae7bd192fb5634 100644 (file)
@@ -450,7 +450,7 @@ slap_modrdn2mods(
 
                /* ACL check of newly added attrs */
                if ( op->o_bd && !access_allowed( op, e, desc,
-                       &new_rdn[a_cnt]->la_value, ACL_WRITE, NULL ) ) {
+                       &new_rdn[a_cnt]->la_value, ACL_WADD, NULL ) ) {
                        Debug( LDAP_DEBUG_TRACE,
                                "slap_modrdn2modlist: access to attr \"%s\" "
                                "(new) not allowed\n", 
@@ -480,6 +480,7 @@ slap_modrdn2mods(
                        mod_tmp->sml_nvalues = NULL;
                }
                mod_tmp->sml_op = SLAP_MOD_SOFTADD;
+               mod_tmp->sml_flags = SLAP_MOD_INTERNAL;
                mod_tmp->sml_next = mod;
                mod = mod_tmp;
        }
@@ -500,9 +501,9 @@ slap_modrdn2mods(
                                goto done;              
                        }
 
-                       /* ACL check of newly added attrs */
+                       /* ACL check of old rdn attrs removal */
                        if ( op->o_bd && !access_allowed( op, e, desc,
-                               &old_rdn[d_cnt]->la_value, ACL_WRITE
+                               &old_rdn[d_cnt]->la_value, ACL_WDEL
                                NULL ) ) {
                                Debug( LDAP_DEBUG_TRACE,
                                        "slap_modrdn2modlist: access "
@@ -534,6 +535,7 @@ slap_modrdn2mods(
                                mod_tmp->sml_nvalues = NULL;
                        }
                        mod_tmp->sml_op = LDAP_MOD_DELETE;
+                       mod_tmp->sml_flags = SLAP_MOD_INTERNAL;
                        mod_tmp->sml_next = mod;
                        mod = mod_tmp;
                }