Author: markt
Date: Tue Nov 13 14:17:42 2012
New Revision: 1408739

URL: http://svn.apache.org/viewvc?rev=1408739&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54141
Increase the maximum number of supported nested realm levels from 2 to 3 and 
make the maximum configurable via a system property.

Modified:
    tomcat/trunk/java/org/apache/catalina/startup/RealmRuleSet.java
    tomcat/trunk/webapps/docs/config/systemprops.xml

Modified: tomcat/trunk/java/org/apache/catalina/startup/RealmRuleSet.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/RealmRuleSet.java?rev=1408739&r1=1408738&r2=1408739&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/RealmRuleSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/RealmRuleSet.java Tue Nov 13 
14:17:42 2012
@@ -34,6 +34,10 @@ import org.apache.tomcat.util.digester.R
 public class RealmRuleSet extends RuleSetBase {
 
 
+    private static final int MAX_NESTED_REALM_LEVELS = Integer.getInteger(
+            "org.apache.catalina.startup.RealmRuleSet.MAX_NESTED_REALM_LEVELS",
+            3).intValue();
+
     // ----------------------------------------------------- Instance Variables
 
 
@@ -83,23 +87,28 @@ public class RealmRuleSet extends RuleSe
     @Override
     public void addRuleInstances(Digester digester) {
 
-        digester.addObjectCreate(prefix + "Realm",
-                                 null, // MUST be specified in the element,
-                                 "className");
-        digester.addSetProperties(prefix + "Realm");
-        digester.addSetNext(prefix + "Realm",
-                            "setRealm",
-                            "org.apache.catalina.Realm");
-
-        digester.addObjectCreate(prefix + "Realm/Realm",
-                                 null, // MUST be specified in the element
-                                 "className");
-        digester.addSetProperties(prefix + "Realm/Realm");
-        digester.addSetNext(prefix + "Realm/Realm",
-                            "addRealm",
-                            "org.apache.catalina.Realm");
-
-    }
+        String pattern = prefix;
 
+        for (int i = 0; i < MAX_NESTED_REALM_LEVELS; i++) {
 
+            if (i > 0) {
+                pattern += "/";
+            }
+            pattern += "Realm";
+
+            digester.addObjectCreate(pattern,
+                                     null, // MUST be specified in the element,
+                                     "className");
+            digester.addSetProperties(pattern);
+            if (i == 0) {
+                digester.addSetNext(pattern,
+                                    "setRealm",
+                                    "org.apache.catalina.Realm");
+            } else {
+                digester.addSetNext(pattern,
+                                    "addRealm",
+                                    "org.apache.catalina.Realm");
+            }
+        }
+    }
 }

Modified: tomcat/trunk/webapps/docs/config/systemprops.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/systemprops.xml?rev=1408739&r1=1408738&r2=1408739&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/systemprops.xml (original)
+++ tomcat/trunk/webapps/docs/config/systemprops.xml Tue Nov 13 14:17:42 2012
@@ -643,6 +643,12 @@
       <p>If not specified, the default value of <code>false</code> will be 
used.</p>
     </property>
 
+    <property name="org.apache.catalina.startup. 
RealmRuleSet.MAX_NESTED_REALM_LEVELS">
+      <p>The CombinedRealm allows nested Realms. This property controls the
+      maximum permitted number of levels of nesting.</p>
+      <p>If not specified, the default value of <code>3</code> will be 
used.</p>
+    </property>
+
   </properties>
 
 </section>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to