* by ACL_WRITE checking as any found here are not provided
* by the user
*/
- if ( is_at_no_user_mod( mlist->sml_desc->ad_type ) ) {
+ if ( is_at_no_user_mod( mlist->sml_desc->ad_type )
+ && !mlist->sml_managing )
+ {
Debug( LDAP_DEBUG_ACL, "acl: no-user-mod %s:"
" modify access granted\n",
mlist->sml_desc->ad_cname.bv_val, 0, 0 );
goto cleanup;
}
- rs->sr_err = slap_mods_check( modlist, &rs->sr_text,
- textbuf, textlen, NULL );
+ rs->sr_err = slap_mods_check( modlist,
+ &rs->sr_text, textbuf, textlen, NULL );
if ( rs->sr_err != LDAP_SUCCESS ) {
send_ldap_result( op, rs );
for ( ; ml != NULL; ml = ml->sml_next ) {
if ( !is_at_no_user_mod( ml->sml_desc->ad_type ) ) continue;
- if( get_manageDIT( op )) {
+ if ( get_manageDIT( op ) ) {
if ( ml->sml_desc->ad_type->sat_flags & SLAP_AT_MANAGEABLE ) {
+ ml->sml_managing = 1;
continue;
}
#define sml_type sml_mod.sm_type
#define sml_values sml_mod.sm_values
#define sml_nvalues sml_mod.sm_nvalues
+ char sml_managing;
struct slap_mod_list *sml_next;
} Modifications;