Additional changes to improve logic and logging. Still buggy.

This commit is contained in:
Kurt Zeilenga 1999-10-21 20:29:52 +00:00
parent 3f9ba7e05a
commit 3d765d6108
2 changed files with 32 additions and 17 deletions

View File

@ -168,9 +168,10 @@ access_allowed(
} }
Debug( LDAP_DEBUG_ACL, Debug( LDAP_DEBUG_ACL,
"=> access_allowed: %s access %s to \"%s\"\n", "=> access_allowed: %s access %s by %s\n",
access2str( access ), access2str( access ),
ACL_GRANT(mask, access) ? "granted" : "denied", op->o_dn ); ACL_GRANT(mask, access) ? "granted" : "denied",
accessmask2str( mask ) );
return ACL_GRANT(mask, access); return ACL_GRANT(mask, access);
} }
@ -222,7 +223,7 @@ acl_get(
continue; continue;
} else { } else {
Debug( LDAP_DEBUG_ACL, "=> acl_get: ACL [%d] matched\n", Debug( LDAP_DEBUG_ACL, "=> acl_get: [%d] matched\n",
*count, 0, 0); *count, 0, 0);
} }
} }
@ -281,12 +282,12 @@ acl_mask(
assert( mask != NULL ); assert( mask != NULL );
Debug( LDAP_DEBUG_ACL, Debug( LDAP_DEBUG_ACL,
"=> acl_mask: access to entry \"%s\", attr \"%s\"\n requested\n", "=> acl_mask: access to entry \"%s\", attr \"%s\" requested\n",
e->e_dn, attr, 0 ); e->e_dn, attr, 0 );
Debug( LDAP_DEBUG_ACL, Debug( LDAP_DEBUG_ACL,
"=> acl_mask: to value \"%s\" by \"%s\", (%s) \n", "=> acl_mask: to value \"%s\" by \"%s\", (%s) \n",
val ? val->bv_val : "any", val ? val->bv_val : "*",
op->o_ndn ? op->o_ndn : "", op->o_ndn ? op->o_ndn : "",
accessmask2str( *mask ) ); accessmask2str( *mask ) );
@ -480,28 +481,39 @@ acl_mask(
Debug( LDAP_DEBUG_ACL, Debug( LDAP_DEBUG_ACL,
"<= acl_mask: matched clause #%d\n", "<= acl_mask: [%d] applying %s (%s)\n",
i, 0, 0 ); i, accessmask2str( modmask ),
b->a_type == ACL_CONTINUE
? "continue"
: b->a_type == ACL_BREAK
? "break"
: "stop" );
/* save old mask */
oldmask = *mask; oldmask = *mask;
if( ACL_IS_ADDITIVE(modmask) ) { if( ACL_IS_ADDITIVE(modmask) ) {
ACL_PRIV_CLR( *mask, ACL_PRIV_LEVEL ); /* add privs */
ACL_PRIV_SET( *mask, modmask ); ACL_PRIV_SET( *mask, modmask );
/* cleanup */
ACL_PRIV_CLR( *mask, ~ACL_PRIV_MASK );
} else if( ACL_IS_SUBTRACTIVE(modmask) ) { } else if( ACL_IS_SUBTRACTIVE(modmask) ) {
ACL_PRIV_CLR( *mask, ACL_PRIV_LEVEL ); /* substract privs */
ACL_PRIV_CLR( *mask, modmask ); ACL_PRIV_CLR( *mask, modmask );
/* cleanup */
ACL_PRIV_CLR( *mask, ~ACL_PRIV_MASK );
} else { } else {
ACL_PRIV_ASSIGN( *mask, modmask ); /* assign privs */
*mask = modmask;
} }
Debug( LDAP_DEBUG_ACL, Debug( LDAP_DEBUG_ACL,
"<= acl_mask: old (%s) mod (%s) new (%s)\n", "<= acl_mask: [%d] old: %s new: %s\n",
accessmask2str(oldmask), i, accessmask2str(oldmask), accessmask2str(*mask));
accessmask2str(modmask),
accessmask2str(*mask) );
if( b->a_type == ACL_CONTINUE ) { if( b->a_type == ACL_CONTINUE ) {
continue; continue;
@ -510,10 +522,13 @@ acl_mask(
return ACL_BREAK; return ACL_BREAK;
} else { } else {
break; return ACL_STOP;
} }
} }
Debug( LDAP_DEBUG_ACL,
"<= acl_mask: no more <who> clauses, returning %s (stop)\n",
accessmask2str(*mask), 0, 0 );
return ACL_STOP; return ACL_STOP;
} }

View File

@ -471,7 +471,7 @@ parse_acl(
char * char *
accessmask2str( slap_access_mask_t mask ) accessmask2str( slap_access_mask_t mask )
{ {
static char buf[sizeof("unknown (+wrsca0)")]; static char buf[sizeof("unknown (+wrscan)")];
int none=1; int none=1;
if ( ACL_IS_INVALID( mask ) ) { if ( ACL_IS_INVALID( mask ) ) {