summaryrefslogtreecommitdiff
path: root/java/openjdk6/files/icedtea/security/20130416/8009857.patch
diff options
context:
space:
mode:
Diffstat (limited to 'java/openjdk6/files/icedtea/security/20130416/8009857.patch')
-rw-r--r--java/openjdk6/files/icedtea/security/20130416/8009857.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/java/openjdk6/files/icedtea/security/20130416/8009857.patch b/java/openjdk6/files/icedtea/security/20130416/8009857.patch
new file mode 100644
index 000000000000..7e042c905ba5
--- /dev/null
+++ b/java/openjdk6/files/icedtea/security/20130416/8009857.patch
@@ -0,0 +1,66 @@
+# HG changeset patch
+# User smarks
+# Date 1363655131 25200
+# Node ID 2899c3dbf5e8791b559c39a75a820c17c729c20f
+# Parent b453d9be6b3f5496aa217ade7478d3b7fa32b13b
+8009857: Problem with plugin
+Reviewed-by: jdn, mchung
+
+diff --git openjdk/jdk/src/share/classes/sun/reflect/misc/MethodUtil.java openjdk/jdk/src/share/classes/sun/reflect/misc/MethodUtil.java
+--- jdk/src/share/classes/sun/reflect/misc/MethodUtil.java
++++ jdk/src/share/classes/sun/reflect/misc/MethodUtil.java
+@@ -50,8 +50,27 @@ import sun.security.util.SecurityConstan
+
+
+ class Trampoline {
++ static {
++ if (Trampoline.class.getClassLoader() == null) {
++ throw new Error(
++ "Trampoline must not be defined by the bootstrap classloader");
++ }
++ }
++
++ private static void ensureInvocableMethod(Method m)
++ throws InvocationTargetException
++ {
++ Class<?> clazz = m.getDeclaringClass();
++ if (clazz.equals(AccessController.class) ||
++ clazz.equals(Method.class))
++ throw new InvocationTargetException(
++ new UnsupportedOperationException("invocation not supported"));
++ }
++
+ private static Object invoke(Method m, Object obj, Object[] params)
+- throws InvocationTargetException, IllegalAccessException {
++ throws InvocationTargetException, IllegalAccessException
++ {
++ ensureInvocableMethod(m);
+ return m.invoke(obj, params);
+ }
+ }
+@@ -255,10 +275,6 @@ public final class MethodUtil extends Se
+ */
+ public static Object invoke(Method m, Object obj, Object[] params)
+ throws InvocationTargetException, IllegalAccessException {
+- if (m.getDeclaringClass().equals(AccessController.class) ||
+- m.getDeclaringClass().equals(Method.class))
+- throw new InvocationTargetException(
+- new UnsupportedOperationException("invocation not supported"));
+ try {
+ return bounce.invoke(null, new Object[] {m, obj, params});
+ } catch (InvocationTargetException ie) {
+@@ -292,10 +307,10 @@ public final class MethodUtil extends Se
+
+ types = new Class[] {Method.class, Object.class, Object[].class};
+ b = t.getDeclaredMethod("invoke", types);
+- ((AccessibleObject)b).setAccessible(true);
+- return b;
+- }
+- });
++ b.setAccessible(true);
++ return b;
++ }
++ });
+ } catch (Exception e) {
+ throw new InternalError("bouncer cannot be found");
+ }