From: Kurt Zeilenga Date: Mon, 14 Jan 2002 17:47:39 +0000 (+0000) Subject: ITS#1530: fix ACLs on empty replace bug X-Git-Tag: OPENLDAP_REL_ENG_2_0_20~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b4b96b3b1733c1e6f1893fe6c46ab7c70ee8210;p=thirdparty%2Fopenldap.git ITS#1530: fix ACLs on empty replace bug --- diff --git a/CHANGES b/CHANGES index e77bd1edd1..3aeda17a65 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,7 @@ OpenLDAP 2.0 Change Log OpenLDAP 2.0.20 Engineering + Fixed slapd ACL empty replace bug (ITS#1530) Fixed slapd ACL peername/sockname exact match bug (ITS#1516) Fixed back-passwd db_config bug Fixed -lldap cache debug bug (ITS#1501) diff --git a/servers/slapd/acl.c b/servers/slapd/acl.c index 43cdfbd1d9..c813eda544 100644 --- a/servers/slapd/acl.c +++ b/servers/slapd/acl.c @@ -899,10 +899,20 @@ acl_check_modlist( switch ( mlist->sml_op ) { case LDAP_MOD_REPLACE: - case LDAP_MOD_ADD: if ( mlist->sml_bvalues == NULL ) { + if ( ! access_allowed( be, conn, op, e, + mlist->sml_desc, NULL, ACL_WRITE ) ) + { + return( 0 ); + } break; } + + /* fall thru */ + + case LDAP_MOD_ADD: + assert( mlist->sml_bvalues != NULL ); + for ( i = 0; mlist->sml_bvalues[i] != NULL; i++ ) { if ( ! access_allowed( be, conn, op, e, mlist->sml_desc, mlist->sml_bvalues[i], ACL_WRITE ) ) @@ -929,6 +939,10 @@ acl_check_modlist( } } break; + + default: + assert( 0 ); + return( 0 ); } }