summaryrefslogtreecommitdiff
path: root/java/openjdk6/files/icedtea/openjdk/8017291-cast_proxies_aside.patch
blob: e030a78170dcde21f8957c6e40d76a4a40a84e63 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# HG changeset patch
# User mchung
# Date 1373884816 25200
#      Mon Jul 15 03:40:16 2013 -0700
# Node ID 011d86bdcbf8d4fe0016351b775ff1f48f3620a1
# Parent  768afb4062fb6653278e5f7e5304a623fcd80c9c
8017291: Cast Proxies Aside
Reviewed-by: alanb, ahgross

diff -r 768afb4062fb -r 011d86bdcbf8 src/share/classes/java/lang/ClassLoader.java
--- jdk/src/share/classes/java/lang/ClassLoader.java	Fri Oct 25 21:19:26 2013 +0100
+++ jdk/src/share/classes/java/lang/ClassLoader.java	Mon Jul 15 03:40:16 2013 -0700
@@ -54,6 +54,7 @@
 import sun.misc.VM;
 import sun.reflect.CallerSensitive;
 import sun.reflect.Reflection;
+import sun.reflect.misc.ReflectUtil;
 import sun.security.util.SecurityConstants;
 
 /**
@@ -338,6 +339,13 @@
     private void checkPackageAccess(Class cls, ProtectionDomain pd) {
         final SecurityManager sm = System.getSecurityManager();
         if (sm != null) {
+            if (ReflectUtil.isNonPublicProxyClass(cls)) {
+                for (Class intf: cls.getInterfaces()) {
+                    checkPackageAccess(intf, pd);
+                }
+                return;
+            }
+
             final String name = cls.getName();
             final int i = name.lastIndexOf('.');
             if (i != -1) {