Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
e31c9d24
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
e31c9d24
编写于
5月 07, 2013
作者:
J
jfranck
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8011139: (reflect) Revise checking in getEnclosingClass
Reviewed-by: darcy, mchung, ahgross
上级
6b0ff4d7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
9 deletion
+19
-9
src/share/classes/java/lang/Class.java
src/share/classes/java/lang/Class.java
+19
-9
未找到文件。
src/share/classes/java/lang/Class.java
浏览文件 @
e31c9d24
...
...
@@ -970,7 +970,7 @@ public final class Class<T> implements java.io.Serializable,
*
* <li> invocation of
* {@link SecurityManager#checkMemberAccess
* s.checkMemberAccess(enclosingClass, Member.
PUBLIC
)} denies
* s.checkMemberAccess(enclosingClass, Member.
DECLARED
)} denies
* access to the methods within the enclosing class
*
* <li> the caller's class loader is not the same as or an
...
...
@@ -1126,7 +1126,7 @@ public final class Class<T> implements java.io.Serializable,
*
* <li> invocation of
* {@link SecurityManager#checkMemberAccess
* s.checkMemberAccess(enclosingClass, Member.
PUBLIC
)} denies
* s.checkMemberAccess(enclosingClass, Member.
DECLARED
)} denies
* access to the constructors within the enclosing class
*
* <li> the caller's class loader is not the same as or an
...
...
@@ -1248,13 +1248,9 @@ public final class Class<T> implements java.io.Serializable,
enclosingCandidate
=
enclosingClass
;
}
// be very careful not to change the stack depth of this
// checkMemberAccess call for security reasons
// see java.lang.SecurityManager.checkMemberAccess
if
(
enclosingCandidate
!=
null
)
{
enclosingCandidate
.
checkMemberAccess
(
Member
.
DECLARED
,
Reflection
.
getCallerClass
(),
true
);
}
if
(
enclosingCandidate
!=
null
)
enclosingCandidate
.
checkPackageAccess
(
ClassLoader
.
getClassLoader
(
Reflection
.
getCallerClass
()),
true
);
return
enclosingCandidate
;
}
...
...
@@ -2303,6 +2299,8 @@ public final class Class<T> implements java.io.Serializable,
* Check if client is allowed to access members. If access is denied,
* throw a SecurityException.
*
* This method also enforces package access.
*
* <p> Default policy: allow all clients access with normal Java access
* control.
*/
...
...
@@ -2323,7 +2321,19 @@ public final class Class<T> implements java.io.Serializable,
// checkMemberAccess of subclasses of SecurityManager as specified.
s
.
checkMemberAccess
(
this
,
which
);
}
this
.
checkPackageAccess
(
ccl
,
checkProxyInterfaces
);
}
}
/*
* Checks if a client loaded in ClassLoader ccl is allowed to access this
* class under the current package access policy. If access is denied,
* throw a SecurityException.
*/
private
void
checkPackageAccess
(
final
ClassLoader
ccl
,
boolean
checkProxyInterfaces
)
{
final
SecurityManager
s
=
System
.
getSecurityManager
();
if
(
s
!=
null
)
{
final
ClassLoader
cl
=
getClassLoader0
();
if
(
ReflectUtil
.
needsPackageAccessCheck
(
ccl
,
cl
))
{
String
name
=
this
.
getName
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录