]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/acl.c
Added proposed request parameters to Operation. #ifdef'd, not active.
[openldap] / servers / slapd / acl.c
index 4ca945e8dd0bbeff8a844cd3cb7b2c1626a8a727..0829ec1957190d42005b77511fa9e56019b04d79 100644 (file)
@@ -142,6 +142,9 @@ access_allowed(
 
        assert( attr != NULL );
 
+       if( op && op->o_is_auth_check && (access == ACL_SEARCH || access == ACL_READ)) {
+               access = ACL_AUTH;
+       }
        if( state && state->as_recorded && state->as_vd_ad==desc) { 
                if( state->as_recorded & ACL_STATE_RECORDED_NV &&
                        val == NULL )
@@ -737,6 +740,9 @@ dn_match_cleanup:;
                }
 
                if ( b->a_sockurl_pat.bv_len ) {
+                       if ( !conn->c_listener_url.bv_val ) {
+                               continue;
+                       }
 #ifdef NEW_LOGGING
                        LDAP_LOG( ACL, DETAIL1, 
                                   "acl_mask: conn %lu  check a_sockurl_pat: %s\n",
@@ -761,6 +767,9 @@ dn_match_cleanup:;
                }
 
                if ( b->a_domain_pat.bv_len ) {
+                       if ( !conn->c_peer_domain.bv_val ) {
+                               continue;
+                       }
 #ifdef NEW_LOGGING
                        LDAP_LOG( ACL, DETAIL1, 
                                   "acl_mask: conn %lu  check a_domain_pat: %s\n",
@@ -815,9 +824,12 @@ dn_match_cleanup:;
                }
 
                if ( b->a_peername_pat.bv_len ) {
+                       if ( !conn->c_peer_name.bv_val ) {
+                               continue;
+                       }
 #ifdef NEW_LOGGING
                        LDAP_LOG( ACL, DETAIL1, 
-                                  "acl_mask: conn %lu  check a_perrname_path: %s\n",
+                                  "acl_mask: conn %lu  check a_peername_path: %s\n",
                                   conn->c_connid, b->a_peername_pat.bv_val , 0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "<= check a_peername_path: %s\n",
@@ -838,6 +850,9 @@ dn_match_cleanup:;
                }
 
                if ( b->a_sockname_pat.bv_len ) {
+                       if ( !conn->c_sock_name.bv_val ) {
+                               continue;
+                       }
 #ifdef NEW_LOGGING
                        LDAP_LOG( ACL, DETAIL1, 
                                   "acl_mask: conn %lu  check a_sockname_path: %s\n",
@@ -889,8 +904,8 @@ dn_match_cleanup:;
                                at = attrs_find( at->a_next, b->a_dn_at ) )
                        {
                                if( value_find_ex( b->a_dn_at,
-                                       SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH, at->a_vals, &bv )
-                                       == 0 )
+                                       SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH,
+                                       at->a_vals, &bv ) == 0 )
                                {
                                        /* found it */
                                        match = 1;