From b2284183f9ebcb655b286e5b6cbc8e583939289d Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Wed, 17 Aug 2005 22:06:46 +0000 Subject: [PATCH] more on manage --- servers/slapd/acl.c | 4 +++- servers/slapd/modify.c | 7 ++++--- servers/slapd/slap.h | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/servers/slapd/acl.c b/servers/slapd/acl.c index 2f27cf5b5f..d6bc21d311 100644 --- a/servers/slapd/acl.c +++ b/servers/slapd/acl.c @@ -2290,7 +2290,9 @@ acl_check_modlist( * 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 ); diff --git a/servers/slapd/modify.c b/servers/slapd/modify.c index ef20429217..9dd1061f7f 100644 --- a/servers/slapd/modify.c +++ b/servers/slapd/modify.c @@ -184,8 +184,8 @@ do_modify( 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 ); @@ -499,8 +499,9 @@ slap_mods_no_user_mod_check( 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; } diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h index 0d9fc9ce9d..5fed372fd3 100644 --- a/servers/slapd/slap.h +++ b/servers/slapd/slap.h @@ -1173,6 +1173,7 @@ typedef struct slap_mod_list { #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; -- 2.39.5