Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell11
提交
7736f263
D
dragonwell11
项目概览
openanolis
/
dragonwell11
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7736f263
编写于
9月 28, 2015
作者:
S
sundar
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8137258: JSObjectLinker and BrowserJSObjectLinker should not expose internal JS objects
Reviewed-by: attila, hannesw
上级
a7139530
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
2 deletion
+26
-2
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/BrowserJSObjectLinker.java
...ashorn/internal/runtime/linker/BrowserJSObjectLinker.java
+2
-1
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java
...s/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java
+2
-1
nashorn/test/src/jdk/nashorn/api/scripting/test/PluggableJSObjectTest.java
...jdk/nashorn/api/scripting/test/PluggableJSObjectTest.java
+22
-0
未找到文件。
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/BrowserJSObjectLinker.java
浏览文件 @
7736f263
...
...
@@ -107,9 +107,10 @@ final class BrowserJSObjectLinker implements TypeBasedGuardingDynamicLinker {
return
null
;
}
final
GuardedInvocation
inv
;
GuardedInvocation
inv
;
if
(
jsObjectClass
.
isInstance
(
self
))
{
inv
=
lookup
(
desc
,
request
,
linkerServices
);
inv
=
inv
.
replaceMethods
(
linkerServices
.
filterInternalObjects
(
inv
.
getInvocation
()),
inv
.
getGuard
());
}
else
{
throw
new
AssertionError
();
// Should never reach here.
}
...
...
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java
浏览文件 @
7736f263
...
...
@@ -77,9 +77,10 @@ final class JSObjectLinker implements TypeBasedGuardingDynamicLinker {
return
null
;
}
final
GuardedInvocation
inv
;
GuardedInvocation
inv
;
if
(
self
instanceof
JSObject
)
{
inv
=
lookup
(
desc
,
request
,
linkerServices
);
inv
=
inv
.
replaceMethods
(
linkerServices
.
filterInternalObjects
(
inv
.
getInvocation
()),
inv
.
getGuard
());
}
else
if
(
self
instanceof
Map
||
self
instanceof
Bindings
)
{
// guard to make sure the Map or Bindings does not turn into JSObject later!
final
GuardedInvocation
beanInv
=
nashornBeansLinker
.
getGuardedInvocation
(
request
,
linkerServices
);
...
...
nashorn/test/src/jdk/nashorn/api/scripting/test/PluggableJSObjectTest.java
浏览文件 @
7736f263
...
...
@@ -27,6 +27,7 @@ package jdk.nashorn.api.scripting.test;
import
static
org
.
testng
.
Assert
.
assertEquals
;
import
static
org
.
testng
.
Assert
.
assertFalse
;
import
static
org
.
testng
.
Assert
.
assertTrue
;
import
static
org
.
testng
.
Assert
.
fail
;
import
java.nio.IntBuffer
;
...
...
@@ -34,9 +35,11 @@ import java.util.Collection;
import
java.util.HashMap
;
import
java.util.LinkedHashMap
;
import
java.util.Set
;
import
javax.script.Invocable
;
import
javax.script.ScriptEngine
;
import
javax.script.ScriptEngineManager
;
import
jdk.nashorn.api.scripting.AbstractJSObject
;
import
jdk.nashorn.api.scripting.ScriptObjectMirror
;
import
org.testng.annotations.Test
;
/**
...
...
@@ -286,4 +289,23 @@ public class PluggableJSObjectTest {
fail
(
exp
.
getMessage
());
}
}
// @bug 8137258: JSObjectLinker and BrowserJSObjectLinker should not expose internal JS objects
@Test
public
void
hidingInternalObjectsForJSObjectTest
()
throws
Exception
{
final
ScriptEngineManager
engineManager
=
new
ScriptEngineManager
();
final
ScriptEngine
e
=
engineManager
.
getEngineByName
(
"nashorn"
);
final
String
code
=
"function func(obj) { obj.foo = [5, 5]; obj.bar = {} }"
;
e
.
eval
(
code
);
// call the exposed function but pass user defined JSObject impl as argument
((
Invocable
)
e
).
invokeFunction
(
"func"
,
new
AbstractJSObject
()
{
@Override
public
void
setMember
(
final
String
name
,
final
Object
value
)
{
// make sure that wrapped objects are passed (and not internal impl. objects)
assertTrue
(
value
.
getClass
()
==
ScriptObjectMirror
.
class
);
}
});
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录