glenn 01/06/26 14:02:20
Modified: catalina/src/share/org/apache/catalina/loader
WebappClassLoader.java
Log:
Fixed SecurityException when a JSP page is the first request
Revision Changes Path
1.7 +28 -28
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
Index: WebappClassLoader.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- WebappClassLoader.java 2001/06/24 01:16:06 1.6
+++ WebappClassLoader.java 2001/06/26 21:02:18 1.7
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
1.6 2001/06/24 01:16:06 remm Exp $
- * $Revision: 1.6 $
- * $Date: 2001/06/24 01:16:06 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
1.7 2001/06/26 21:02:18 glenn Exp $
+ * $Revision: 1.7 $
+ * $Date: 2001/06/26 21:02:18 $
*
* ====================================================================
*
@@ -77,13 +77,12 @@
import java.net.URLStreamHandlerFactory;
import java.net.URLStreamHandler;
import java.security.AccessControlException;
-import java.security.PrivilegedAction;
import java.security.AccessController;
-import java.security.AccessControlContext;
import java.security.CodeSource;
import java.security.Permission;
import java.security.PermissionCollection;
import java.security.Policy;
+import java.security.PrivilegedAction;
import java.security.cert.Certificate;
import java.util.ArrayList;
import java.util.Enumeration;
@@ -124,12 +123,29 @@
*
* @author Remy Maucherat
* @author Craig R. McClanahan
- * @version $Revision: 1.6 $ $Date: 2001/06/24 01:16:06 $
+ * @version $Revision: 1.7 $ $Date: 2001/06/26 21:02:18 $
*/
public class WebappClassLoader
extends URLClassLoader
implements Reloader, Lifecycle {
+ protected class PrivilegedFindResource
+ implements PrivilegedAction {
+
+ private String name;
+ private String path;
+
+ PrivilegedFindResource(String name, String path) {
+ this.name = name;
+ this.path = path;
+ }
+
+ public Object run() {
+ return findResourceInternal(name, path);
+ }
+
+ }
+
// ----------------------------------------------------------- Constructors
@@ -145,7 +161,6 @@
this.parent = getParent();
system = getSystemClassLoader();
securityManager = System.getSecurityManager();
- accessController = AccessController.getContext();
}
@@ -161,7 +176,6 @@
this.parent = getParent();
system = getSystemClassLoader();
securityManager = System.getSecurityManager();
- accessController = AccessController.getContext();
}
@@ -319,12 +333,6 @@
/**
- * Access controller.
- */
- private AccessControlContext accessController;
-
-
- /**
* Has this component been started?
*/
protected boolean started = false;
@@ -850,12 +858,9 @@
ResourceEntry entry = (ResourceEntry) resourceEntries.get(name);
if (entry == null) {
if (securityManager != null) {
- entry = (ResourceEntry) AccessController.doPrivileged
- (new PrivilegedAction() {
- public Object run() {
- return findResourceInternal(name, name);
- }
- }, accessController);
+ PrivilegedAction dp =
+ new PrivilegedFindResource(name, name);
+ entry = (ResourceEntry)AccessController.doPrivileged(dp);
} else {
entry = findResourceInternal(name, name);
}
@@ -1369,14 +1374,9 @@
ResourceEntry entry = null;
if (securityManager != null) {
- final String fName = name;
- final String fClassPath = classPath;
- entry = (ResourceEntry) AccessController.doPrivileged
- (new PrivilegedAction() {
- public Object run() {
- return findResourceInternal(fName, fClassPath);
- }
- }, accessController);
+ PrivilegedAction dp =
+ new PrivilegedFindResource(name, classPath);
+ entry = (ResourceEntry)AccessController.doPrivileged(dp);
} else {
entry = findResourceInternal(name, classPath);
}