]> git.sur5r.net Git - openldap/commitdiff
New access_allowed()
authorHoward Chu <hyc@openldap.org>
Fri, 11 Dec 2009 11:07:58 +0000 (11:07 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 11 Dec 2009 11:07:58 +0000 (11:07 +0000)
contrib/slapd-modules/addpartial/addpartial-overlay.c
contrib/slapd-modules/lastmod/lastmod.c

index 309391a119ab8e213ec87650d9f263244de2878f..0dde1fc298e00148a33709d28677ac74b4e9f941 100644 (file)
@@ -48,6 +48,7 @@ static int addpartial_add( Operation *op, SlapReply *rs)
     Entry *found = NULL;
     slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
     int rc;
+       AclCheck ak = { op->ora_e. slap_schema.si_ad_entry, NULL, ACL_WRITE };
 
     toAdd = op->oq_add.rs_e;
 
@@ -55,8 +56,7 @@ static int addpartial_add( Operation *op, SlapReply *rs)
           addpartial.on_bi.bi_type, toAdd->e_nname.bv_val,0);
 
     /* if the user doesn't have access, fall through to the normal ADD */
-    if(!access_allowed(op, toAdd, slap_schema.si_ad_entry,
-                       NULL, ACL_WRITE, NULL))
+    if(!access_allowed(op, &ak ))
     {
         return SLAP_CB_CONTINUE;
     }
index 030bd0ddf82618700474527cc62a28f228bcb47a..fdbc1dcd01f6ff1fe4e7884fd6ba75e05fee25d0 100644 (file)
@@ -148,6 +148,7 @@ lastmod_compare( Operation *op, SlapReply *rs )
        slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;
        lastmod_info_t          *lmi = (lastmod_info_t *)on->on_bi.bi_private;
        Attribute               *a;
+       AclCheck                ak;
 
        ldap_pvt_thread_mutex_lock( &lmi->lmi_entry_mutex );
 
@@ -158,8 +159,12 @@ lastmod_compare( Operation *op, SlapReply *rs )
                goto return_results;
        }
 
-       rs->sr_err = access_allowed( op, lmi->lmi_e, op->oq_compare.rs_ava->aa_desc,
-               &op->oq_compare.rs_ava->aa_value, ACL_COMPARE, NULL );
+       ak.ak_e = lmi->lmi_e;
+       ak.ak_desc = op->oq_compare.rs_ava->aa_desc;
+       ak.ak_val = &op->oq_compare.rs_ava->aa_value;
+       ak.ak_access = ACL_COMPARE;
+       ak.ak_state = NULL;
+       rs->sr_err = access_allowed( op, &ak );
        if ( ! rs->sr_err ) {
                rs->sr_err = LDAP_INSUFFICIENT_ACCESS;
                goto return_results;