glenn 01/06/22 13:10:49
Modified: catalina/src/share/org/apache/catalina/loader
StandardClassLoader.java
Log:
Add support for JndiPermission
Revision Changes Path
1.21 +18 -12
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java
Index: StandardClassLoader.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- StandardClassLoader.java 2001/06/22 02:04:11 1.20
+++ StandardClassLoader.java 2001/06/22 20:10:49 1.21
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v
1.20 2001/06/22 02:04:11 remm Exp $
- * $Revision: 1.20 $
- * $Date: 2001/06/22 02:04:11 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v
1.21 2001/06/22 20:10:49 glenn Exp $
+ * $Revision: 1.21 $
+ * $Date: 2001/06/22 20:10:49 $
*
* ====================================================================
*
@@ -77,6 +77,7 @@
import java.net.URLStreamHandler;
import java.security.AccessControlException;
import java.security.CodeSource;
+import java.security.Permission;
import java.security.PermissionCollection;
import java.security.Policy;
import java.util.ArrayList;
@@ -87,6 +88,7 @@
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
import java.util.jar.Manifest;
+import org.apache.naming.JndiPermission;
/**
@@ -110,7 +112,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
- * @version $Revision: 1.20 $ $Date: 2001/06/22 02:04:11 $
+ * @version $Revision: 1.21 $ $Date: 2001/06/22 20:10:49 $
*/
public class StandardClassLoader
@@ -296,10 +298,10 @@
/**
- * A list of read FilePermission's required if this loader
+ * A list of read File and Jndi Permission's required if this loader
* is for a web application context.
*/
- private ArrayList filePermissionList = new ArrayList();
+ private ArrayList permissionList = new ArrayList();
/**
@@ -387,20 +389,24 @@
/**
* If there is a Java SecurityManager create a read FilePermission
- * for the file directory path.
+ * or JndiPermission for the file directory path.
*
* @param path file directory path
*/
public void setPermissions(String path) {
if( securityManager != null ) {
- filePermissionList.add(new FilePermission(path + "-","read"));
+ if( path.startsWith("jndi:") || path.startsWith("jar:jndi:") ) {
+ permissionList.add(new JndiPermission(path + "*"));
+ } else {
+ permissionList.add(new FilePermission(path + "-","read"));
+ }
}
}
/**
* If there is a Java SecurityManager add a read FilePermission
- * for URL.
+ * or JndiPermission for URL.
*
* @param url URL for a file or directory on local system
*/
@@ -1139,10 +1145,10 @@
if ((pc = (PermissionCollection)loaderPC.get(codeUrl)) == null) {
pc = super.getPermissions(codeSource);
if (pc != null) {
- Iterator perms = filePermissionList.iterator();
+ Iterator perms = permissionList.iterator();
while (perms.hasNext()) {
- FilePermission fp = (FilePermission)perms.next();
- pc.add(fp);
+ Permission p = (Permission)perms.next();
+ pc.add(p);
}
loaderPC.put(codeUrl,pc);
}