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) {
|