httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From s.@apache.org
Subject svn commit: r1056713 - in /httpd/httpd/trunk: CHANGES modules/aaa/mod_authz_core.c
Date Sat, 08 Jan 2011 14:29:12 GMT
Author: sf
Date: Sat Jan  8 14:29:12 2011
New Revision: 1056713

URL: http://svn.apache.org/viewvc?rev=1056713&view=rev
Log:
Fix a bug in authz logic merging which caused
        section->op == AUTHZ_LOGIC_AND
        auth_result == AUTHZ_DENIED_NO_USER
        child_result == AUTHZ_GRANTED
to return AUTHZ_GRANTED instead of AUTHZ_DENIED_NO_USER.

While there, refactor the if blocks to make them a bit more readable.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/modules/aaa/mod_authz_core.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1056713&r1=1056712&r2=1056713&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Sat Jan  8 14:29:12 2011
@@ -2,6 +2,9 @@
 
 Changes with Apache 2.3.11
 
+  *) mod_authz_core: Fix bug in merging logic if user-based and non-user-based
+     authorization directives were mixed. [Stefan Fritsch]
+
   *) mod_authn_socache: change directive name from AuthnCacheProvider
      to AuthnCacheProvideFor.  The term "provider" is overloaded in
      this module, and we should avoid confusion between the provider

Modified: httpd/httpd/trunk/modules/aaa/mod_authz_core.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/aaa/mod_authz_core.c?rev=1056713&r1=1056712&r2=1056713&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/aaa/mod_authz_core.c (original)
+++ httpd/httpd/trunk/modules/aaa/mod_authz_core.c Sat Jan  8 14:29:12 2011
@@ -730,21 +730,28 @@ static authz_status apply_authz_sections
                  * AUTHZ_DENIED_NO_USER if providing a user may change the
                  * result, AUTHZ_DENIED otherwise.
                  */
-                if (!(section->op == AUTHZ_LOGIC_AND
-                      && auth_result == AUTHZ_DENIED
-                      && child_result == AUTHZ_DENIED_NO_USER)
-                    && !(section->op == AUTHZ_LOGIC_OR
-                         && auth_result == AUTHZ_DENIED_NO_USER
-                         && child_result == AUTHZ_DENIED) )
-                {
-                    auth_result = child_result;
+                if (section->op == AUTHZ_LOGIC_AND) {
+                    if (child_result == AUTHZ_DENIED) {
+                        auth_result = child_result;
+                        break;
+                    }
+                    if ((child_result == AUTHZ_DENIED_NO_USER
+                         && auth_result != AUTHZ_DENIED)
+                        || (auth_result == AUTHZ_NEUTRAL)) {
+                        auth_result = child_result;
+                    }
                 }
-
-                if ((section->op == AUTHZ_LOGIC_AND
-                     && child_result == AUTHZ_DENIED)
-                    || (section->op == AUTHZ_LOGIC_OR
-                        && child_result == AUTHZ_GRANTED)) {
-                    break;
+                else {
+                    /* AUTHZ_LOGIC_OR */
+                    if (child_result == AUTHZ_GRANTED) {
+                        auth_result = child_result;
+                        break;
+                    }
+                    if ((child_result == AUTHZ_DENIED_NO_USER
+                         && auth_result == AUTHZ_DENIED)
+                        || (auth_result == AUTHZ_NEUTRAL)) {
+                        auth_result = child_result;
+                    }
                 }
             }
 



Mime
View raw message