markt 2004/11/19 12:52:02
Modified: catalina/src/share/org/apache/catalina/core
StandardContext.java
catalina/src/share/org/apache/catalina/mbeans
mbeans-descriptors.xml
webapps/tomcat-docs/config context.xml resources.xml
Log:
Fix bug 21818. allowLinking now remembered across web app reload.
Also remembers caseSensitive, cached, and cacheTTL. Added new
attributes to docs.
- based a Remy's patch for a similar issue in TC5
Revision Changes Path
1.126 +80 -2
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java
Index: StandardContext.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
retrieving revision 1.125
retrieving revision 1.126
diff -u -r1.125 -r1.126
--- StandardContext.java 26 Aug 2004 21:32:20 -0000 1.125
+++ StandardContext.java 19 Nov 2004 20:52:02 -0000 1.126
@@ -134,7 +134,6 @@
*/
private boolean available = false;
-
/**
* The Locale to character set mapper for this application.
*/
@@ -417,6 +416,24 @@
/**
+ * Case sensitivity.
+ */
+ protected boolean caseSensitive = true;
+
+
+ /**
+ * Allow linking.
+ */
+ protected boolean allowLinking = false;
+
+
+ /**
+ * Cache TTL in ms.
+ */
+ protected int cacheTTL = 5000;
+
+
+ /**
* Caching allowed flag.
*/
protected boolean cachingAllowed = true;
@@ -427,6 +444,7 @@
*/
protected DirContext webappResources = null;
+
// ----------------------------------------------------- Context
Properties
@@ -447,6 +465,55 @@
}
+
+ /**
+ * Set case sensitivity.
+ */
+ public void setCaseSensitive(boolean caseSensitive) {
+ this.caseSensitive = caseSensitive;
+ }
+
+
+ /**
+ * Is case sensitive ?
+ */
+ public boolean isCaseSensitive() {
+ return caseSensitive;
+ }
+
+
+ /**
+ * Set allow linking.
+ */
+ public void setAllowLinking(boolean allowLinking) {
+ this.allowLinking = allowLinking;
+ }
+
+
+ /**
+ * Is linking allowed.
+ */
+ public boolean isAllowLinking() {
+ return allowLinking;
+ }
+
+
+ /**
+ * Set cache TTL.
+ */
+ public void setCacheTTL(int cacheTTL) {
+ this.cacheTTL = cacheTTL;
+ }
+
+
+ /**
+ * Get cache TTL.
+ */
+ public int getCacheTTL() {
+ return cacheTTL;
+ }
+
+
/**
* Returns true if the internal naming support is used.
*/
@@ -3281,8 +3348,19 @@
try {
ProxyDirContext proxyDirContext =
new ProxyDirContext(env, webappResources);
+ if (webappResources instanceof FileDirContext) {
+ filesystemBased = true;
+ ((FileDirContext) webappResources).setCaseSensitive
+ (isCaseSensitive());
+ ((FileDirContext) webappResources).setAllowLinking
+ (isAllowLinking());
+ }
+
if (webappResources instanceof BaseDirContext) {
((BaseDirContext) webappResources).setDocBase(getBasePath());
+ ((BaseDirContext) webappResources).setCached
+ (isCachingAllowed());
+ ((BaseDirContext)
webappResources).setCacheTTL(getCacheTTL());
((BaseDirContext) webappResources).allocate();
}
this.resources = proxyDirContext;
1.83 +18 -4
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/mbeans-descriptors.xml
Index: mbeans-descriptors.xml
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/mbeans-descriptors.xml,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -r1.82 -r1.83
--- mbeans-descriptors.xml 25 Jan 2004 23:07:16 -0000 1.82
+++ mbeans-descriptors.xml 19 Nov 2004 20:52:02 -0000 1.83
@@ -2072,9 +2072,23 @@
group="Context"
type="org.apache.catalina.core.StandardContext">
- <attribute name="cookies"
- description="Should we attempt to use cookies for session id
- communication?"
+ <attribute name="allowLinking"
+ description="Allow symlinking to outside the webapp root
directory, if the webapp is an exploded directory"
+ is="true"
+ type="boolean"/>
+
+ <attribute name="cacheTTL"
+ description="Time interval in ms between cache refeshes"
+ type="int"/>
+
+ <attribute name="cachingAllowed"
+ description="Should we cache static resources for this webapp"
+ is="true"
+ type="boolean"/>
+
+ <attribute name="caseSensitive"
+ description="Should case sensitivity checks be performed"
+ is="true"
type="boolean"/>
<attribute name="cookies"
1.14 +27 -0 jakarta-tomcat-4.0/webapps/tomcat-docs/config/context.xml
Index: context.xml
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/webapps/tomcat-docs/config/context.xml,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- context.xml 16 Mar 2004 23:23:33 -0000 1.13
+++ context.xml 19 Nov 2004 20:52:02 -0000 1.14
@@ -169,11 +169,38 @@
<attributes>
+ <attribute name="allowLinking" required="false">
+ <p>If the value of this flag is <code>true</code>, symlinks will be
+ allowed inside the web application, pointing to resources outside the
+ web application base path. If not specified, the default value
+ of the flag is <code>false</code>.</p>
+ <p><b>NOTE: This flag MUST NOT be set to true on the Windows platform
+ (or any other OS which does not have a case sensitive filesystem),
+ as it will disable case sensitivity checks, allowing JSP source code
+ disclosure, among other security problems.</b></p>
+ </attribute>
+
+ <attribute name="cacheTTL" required="false">
+ <p>Amount of time in milliseconds between cache entries revalidation.
+ If not specified, the default value is <code>5000</code>
+ (5 seconds).</p>
+ </attribute>
+
<attribute name="cachingAllowed" required="false">
<p>This boolean flag indicates if the resources may be cached. It
defaults to <code>true</code>. If set to <code>false</code>, this
flag overrides the <em>cached</em> attribute of any contained
<a href="resources.html">Resources</a>
element.</p>
+ </attribute>
+
+ <attribute name="caseSensitive" required="false">
+ <p>If the value of this flag is <code>true</code>, all case
sensitivity
+ checks will be disabled. If not
+ specified, the default value of the flag is <code>true</code>.</p>
+ <p><b>NOTE: This flag MUST NOT be set to false on the Windows
platform
+ (or any other OS which does not have a case sensitive filesystem),
+ as it will disable case sensitivity checks, allowing JSP source code
+ disclosure, among other security problems.</b></p>
</attribute>
<attribute name="debug" required="false">
1.4 +2 -2
jakarta-tomcat-4.0/webapps/tomcat-docs/config/resources.xml
Index: resources.xml
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/webapps/tomcat-docs/config/resources.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- resources.xml 16 Mar 2004 23:23:33 -0000 1.3
+++ resources.xml 19 Nov 2004 20:52:02 -0000 1.4
@@ -84,8 +84,8 @@
</attribute>
<attribute name="caseSensitive" required="false">
- <p>This boolean flag toggles case sensitivity for resourceson
- the Windows platform. Defaults to <code>true</code>.</p>
+ <p>This is the functional equivalent to the <em>caseSensitive</em>
+ of a <a href="context.html">Context</a>.</p>
</attribute>
<attribute name="docBase" required="false">
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]