diff options
Diffstat (limited to 'java/openjdk6/files/icedtea/security/7198296.patch')
| -rw-r--r-- | java/openjdk6/files/icedtea/security/7198296.patch | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/java/openjdk6/files/icedtea/security/7198296.patch b/java/openjdk6/files/icedtea/security/7198296.patch deleted file mode 100644 index 056090582212..000000000000 --- a/java/openjdk6/files/icedtea/security/7198296.patch +++ /dev/null @@ -1,114 +0,0 @@ -# HG changeset patch -# User asaha -# Date 1349309940 25200 -# Node ID a66bba985c2c46743d6780879278092c0fa5cf2b -# Parent 5352a40bb0ff7e8a6e826478d7687fff695d9805 -7198296: Refactor classloader usage -Reviewed-by: dsamersoff -Contributed-by: andreas.eriksson@oracle.com - -diff --git a/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java b/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java ---- jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java -+++ jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java -@@ -165,9 +165,17 @@ - withPermissions( new MBeanPermission("*", "getClassLoaderRepository"), - new RuntimePermission("createClassLoader")) - ); -- -- serverCommunicatorAdmin = new -- RMIServerCommunicatorAdmin(EnvHelp.getServerConnectionTimeout(env)); -+ this.defaultContextClassLoader = -+ AccessController.doPrivileged( -+ new PrivilegedAction<ClassLoader>() { -+ @Override -+ public ClassLoader run() { -+ return new CombinedClassLoader(Thread.currentThread().getContextClassLoader(), -+ dcl); -+ } -+ }); -+ serverCommunicatorAdmin = new -+ RMIServerCommunicatorAdmin(EnvHelp.getServerConnectionTimeout(env)); - - this.env = env; - } -@@ -529,7 +537,7 @@ - "connectionId=" + connectionId - +" unwrapping query with defaultClassLoader."); - -- queryValue = unwrap(query, defaultClassLoader, QueryExp.class); -+ queryValue = unwrap(query, defaultContextClassLoader, QueryExp.class); - - try { - final Object params[] = new Object[] { name, queryValue }; -@@ -563,7 +571,7 @@ - "connectionId=" + connectionId - +" unwrapping query with defaultClassLoader."); - -- queryValue = unwrap(query, defaultClassLoader, QueryExp.class); -+ queryValue = unwrap(query, defaultContextClassLoader, QueryExp.class); - - try { - final Object params[] = new Object[] { name, queryValue }; -@@ -1592,7 +1600,8 @@ - ClassLoader orderCL = AccessController.doPrivileged( - new PrivilegedExceptionAction<ClassLoader>() { - public ClassLoader run() throws Exception { -- return new OrderClassLoaders(cl1, cl2); -+ return new CombinedClassLoader(Thread.currentThread().getContextClassLoader(), -+ new OrderClassLoaders(cl1, cl2)); - } - } - ); -@@ -1684,6 +1693,8 @@ - - private final ClassLoader defaultClassLoader; - -+ private final ClassLoader defaultContextClassLoader; -+ - private final ClassLoaderWithRepository classLoaderWithRepository; - - private boolean terminated = false; -@@ -1768,4 +1779,43 @@ - - private static final ClassLogger logger = - new ClassLogger("javax.management.remote.rmi", "RMIConnectionImpl"); -+ -+ private static final class CombinedClassLoader extends ClassLoader { -+ -+ private final static class ClassLoaderWrapper extends ClassLoader { -+ ClassLoaderWrapper(ClassLoader cl) { -+ super(cl); -+ } -+ -+ @Override -+ protected Class<?> loadClass(String name, boolean resolve) -+ throws ClassNotFoundException { -+ return super.loadClass(name, resolve); -+ } -+ }; -+ -+ final ClassLoaderWrapper defaultCL; -+ -+ private CombinedClassLoader(ClassLoader parent, ClassLoader defaultCL) { -+ super(parent); -+ this.defaultCL = new ClassLoaderWrapper(defaultCL); -+ } -+ -+ @Override -+ protected Class<?> loadClass(String name, boolean resolve) -+ throws ClassNotFoundException { -+ try { -+ super.loadClass(name, resolve); -+ } catch(Exception e) { -+ for(Throwable t = e; t != null; t = t.getCause()) { -+ if(t instanceof SecurityException) { -+ throw t==e?(SecurityException)t:new SecurityException(t.getMessage(), e); -+ } -+ } -+ } -+ final Class<?> cl = defaultCL.loadClass(name, resolve); -+ return cl; -+ } -+ -+ } - } |
