You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2010/01/19 13:50:39 UTC
svn commit: r900755 - in /tomcat/tc5.5.x/trunk: STATUS.txt
container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
container/catalina/src/share/org/apache/catalina/security/SecurityClassLoad.java
container/webapps/docs/changelog.xml
Author: kkolinko
Date: Tue Jan 19 12:50:38 2010
New Revision: 900755
URL: http://svn.apache.org/viewvc?rev=900755&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48097
Avoid throwing an AccessControlException which can lead to a NoClassDefFoundError on first access of first jsp.
Modified:
tomcat/tc5.5.x/trunk/STATUS.txt
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/security/SecurityClassLoad.java
tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml
Modified: tomcat/tc5.5.x/trunk/STATUS.txt
URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/STATUS.txt?rev=900755&r1=900754&r2=900755&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/STATUS.txt (original)
+++ tomcat/tc5.5.x/trunk/STATUS.txt Tue Jan 19 12:50:38 2010
@@ -72,25 +72,6 @@
)
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48097
- There are two patches to be applied:
-
- 2) Add a new PrivilegedAction. Patch by markt
- http://svn.apache.org/viewvc?rev=834080&view=rev
- +1: kkolinko, markt, rjung
- -1:
- rjung: minus generics
-
- 3) Remove use of WebappClassLoader$PrivilegedFindResource,
- because all findResourceInternal(String,String) calls are now already
- wrapped with AccessController.doPrivileged, so additional wrapping is not
- needed. Add preloading of the new PrivilegedFindResourceByName class,
- (to fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48097#c13
- )
- http://people.apache.org/~kkolinko/patches/2009-11-12_PrivilegedFindResource_tc6.patch
- +1: kkolinko, markt, rjung
- -1:
-
* Fix CVE-2009-3548 - Windows installer uses insecure default password
http://svn.apache.org/viewvc?rev=834047&view=rev
+1: markt, mturk
Modified: tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java?rev=900755&r1=900754&r2=900755&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java (original)
+++ tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java Tue Jan 19 12:50:38 2010
@@ -114,6 +114,9 @@
public static final boolean ENABLE_CLEAR_REFERENCES =
Boolean.valueOf(System.getProperty("org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES", "true")).booleanValue();
+ /**
+ * @deprecated Not used
+ */
protected class PrivilegedFindResource
implements PrivilegedAction {
@@ -131,6 +134,23 @@
}
+ protected class PrivilegedFindResourceByName
+ implements PrivilegedAction {
+
+ protected String name;
+ protected String path;
+
+ PrivilegedFindResourceByName(String name, String path) {
+ this.name = name;
+ this.path = path;
+ }
+
+ public Object run() {
+ return findResourceInternal(name, path);
+ }
+
+ }
+
protected final class PrivilegedGetClassLoader
implements PrivilegedAction {
@@ -961,7 +981,13 @@
ResourceEntry entry = (ResourceEntry) resourceEntries.get(name);
if (entry == null) {
- entry = findResourceInternal(name, name);
+ if (securityManager != null) {
+ PrivilegedAction dp =
+ new PrivilegedFindResourceByName(name, name);
+ entry = (ResourceEntry) AccessController.doPrivileged(dp);
+ } else {
+ entry = findResourceInternal(name, name);
+ }
}
if (entry != null) {
url = entry.source;
@@ -1844,7 +1870,13 @@
ResourceEntry entry = null;
- entry = findResourceInternal(name, classPath);
+ if (securityManager != null) {
+ PrivilegedAction dp =
+ new PrivilegedFindResourceByName(name, classPath);
+ entry = (ResourceEntry) AccessController.doPrivileged(dp);
+ } else {
+ entry = findResourceInternal(name, classPath);
+ }
if (entry == null)
throw new ClassNotFoundException(name);
@@ -1927,8 +1959,7 @@
}
/**
- * Find specified resource in local repositories. This block
- * will execute under an AccessControl.doPrivilege block.
+ * Find specified resource in local repositories.
*
* @return the loaded resource, or null if the resource isn't found
*/
@@ -1987,13 +2018,7 @@
// Note : Not getting an exception here means the resource was
// found
- if (securityManager != null) {
- PrivilegedAction dp =
- new PrivilegedFindResource(files[i], path);
- entry = (ResourceEntry)AccessController.doPrivileged(dp);
- } else {
- entry = findResourceInternal(files[i], path);
- }
+ entry = findResourceInternal(files[i], path);
ResourceAttributes attributes =
(ResourceAttributes) resources.getAttributes(fullPath);
Modified: tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/security/SecurityClassLoad.java
URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/security/SecurityClassLoad.java?rev=900755&r1=900754&r2=900755&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/security/SecurityClassLoad.java (original)
+++ tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/security/SecurityClassLoad.java Tue Jan 19 12:50:38 2010
@@ -76,7 +76,7 @@
String basePackage = "org.apache.catalina.";
loader.loadClass
(basePackage +
- "loader.WebappClassLoader$PrivilegedFindResource");
+ "loader.WebappClassLoader$PrivilegedFindResourceByName");
}
Modified: tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml?rev=900755&r1=900754&r2=900755&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml (original)
+++ tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml Tue Jan 19 12:50:38 2010
@@ -95,6 +95,11 @@
AccessControlException. (kkolinko)
</update>
<fix>
+ <bug>48097</bug>: Avoid throwing an AccessControlException which can
+ lead to a NoClassDefFoundError on first access of first jsp.
+ (kkolinko/markt)
+ </fix>
+ <fix>
Add an additional permission required by JULI when running under newer
JDKs and a security manager. (markt)
</fix>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org