diff options
Diffstat (limited to 'java/openjdk6/files/icedtea/security/20130618/8008623-mbeanserver_handling.patch')
-rw-r--r-- | java/openjdk6/files/icedtea/security/20130618/8008623-mbeanserver_handling.patch | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/java/openjdk6/files/icedtea/security/20130618/8008623-mbeanserver_handling.patch b/java/openjdk6/files/icedtea/security/20130618/8008623-mbeanserver_handling.patch deleted file mode 100644 index e671e66f8636..000000000000 --- a/java/openjdk6/files/icedtea/security/20130618/8008623-mbeanserver_handling.patch +++ /dev/null @@ -1,121 +0,0 @@ -# HG changeset patch -# User andrew -# Date 1371486568 18000 -# Node ID 299b73e94d28adb15d73b943104ac2562ed8b189 -# Parent 9d9e6637b14441f87a7561fe23981abb4beaf5c4 -8008623: Better handling of MBeanServers - -diff --git a/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java b/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java ---- jdk/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java -+++ jdk/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java -@@ -449,8 +449,7 @@ - Object resource = getResource(instance); - if (resource instanceof ClassLoader - && resource != server.getClass().getClassLoader()) { -- final ModifiableClassLoaderRepository clr = -- instantiator.getClassLoaderRepository(); -+ final ModifiableClassLoaderRepository clr = getInstantiatorCLR(); - if (clr != null) clr.removeClassLoader(name); - } - -@@ -1008,7 +1007,7 @@ - final Object resource = getResource(mbean); - if (resource instanceof ClassLoader) { - final ModifiableClassLoaderRepository clr = -- instantiator.getClassLoaderRepository(); -+ getInstantiatorCLR(); - if (clr == null) { - final RuntimeException wrapped = - new IllegalArgumentException( -@@ -1869,4 +1868,12 @@ - } - } - -+ private ModifiableClassLoaderRepository getInstantiatorCLR() { -+ return AccessController.doPrivileged(new PrivilegedAction<ModifiableClassLoaderRepository>() { -+ @Override -+ public ModifiableClassLoaderRepository run() { -+ return instantiator != null ? instantiator.getClassLoaderRepository() : null; -+ } -+ }); -+ } - } -diff --git a/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java b/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java ---- jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java -+++ jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java -@@ -31,6 +31,7 @@ - import java.io.ObjectInputStream; - import java.security.AccessController; - import java.security.Permission; -+import java.security.PrivilegedAction; - import java.security.PrivilegedExceptionAction; - - // RI import -@@ -231,8 +232,16 @@ - clr = new ClassLoaderRepositorySupport(); - instantiator = new MBeanInstantiator(clr); - } -+ -+ final MBeanInstantiator fInstantiator = instantiator; - this.secureClr = new -- SecureClassLoaderRepository(instantiator.getClassLoaderRepository()); -+ SecureClassLoaderRepository(AccessController.doPrivileged(new PrivilegedAction<ClassLoaderRepository>() { -+ @Override -+ public ClassLoaderRepository run() { -+ return fInstantiator.getClassLoaderRepository(); -+ } -+ }) -+ ); - if (delegate == null) - delegate = new MBeanServerDelegateImpl(); - if (outer == null) -@@ -1246,8 +1255,14 @@ - class loader. The ClassLoaderRepository knows how - to handle that case. */ - ClassLoader myLoader = outerShell.getClass().getClassLoader(); -- final ModifiableClassLoaderRepository loaders = -- instantiator.getClassLoaderRepository(); -+ final ModifiableClassLoaderRepository loaders = AccessController.doPrivileged(new PrivilegedAction<ModifiableClassLoaderRepository>() { -+ -+ @Override -+ public ModifiableClassLoaderRepository run() { -+ return instantiator.getClassLoaderRepository(); -+ } -+ }); -+ - if (loaders != null) { - loaders.addClassLoader(myLoader); - -diff --git a/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java b/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java ---- jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java -+++ jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java -@@ -625,6 +625,7 @@ - * Return the Default Loader Repository used by this instantiator object. - **/ - public ModifiableClassLoaderRepository getClassLoaderRepository() { -+ checkMBeanPermission((String)null, null, null, "getClassLoaderRepository"); - return clr; - } - -@@ -736,9 +737,19 @@ - String member, - ObjectName objectName, - String actions) { -+ if (clazz != null) { -+ checkMBeanPermission(clazz.getName(), member, objectName, actions); -+ } -+ } -+ -+ private static void checkMBeanPermission(String classname, -+ String member, -+ ObjectName objectName, -+ String actions) -+ throws SecurityException { - SecurityManager sm = System.getSecurityManager(); -- if (clazz != null && sm != null) { -- Permission perm = new MBeanPermission(clazz.getName(), -+ if (sm != null) { -+ Permission perm = new MBeanPermission(classname, - member, - objectName, - actions); |