Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
dc6f41d5
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
dc6f41d5
编写于
12月 14, 2010
作者:
N
never
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6765546: Wrong sscanf used to parse CompilerOracle command >= 32 characters could lead to crash
Reviewed-by: kvn, iveresov
上级
0d7e738b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
2 deletion
+8
-2
src/share/vm/compiler/compilerOracle.cpp
src/share/vm/compiler/compilerOracle.cpp
+8
-2
未找到文件。
src/share/vm/compiler/compilerOracle.cpp
浏览文件 @
dc6f41d5
...
@@ -332,7 +332,7 @@ static OracleCommand parse_command_name(const char * line, int* bytes_read) {
...
@@ -332,7 +332,7 @@ static OracleCommand parse_command_name(const char * line, int* bytes_read) {
"command_names size mismatch"
);
"command_names size mismatch"
);
*
bytes_read
=
0
;
*
bytes_read
=
0
;
char
command
[
3
2
];
char
command
[
3
3
];
int
result
=
sscanf
(
line
,
"%32[a-z]%n"
,
command
,
bytes_read
);
int
result
=
sscanf
(
line
,
"%32[a-z]%n"
,
command
,
bytes_read
);
for
(
uint
i
=
0
;
i
<
ARRAY_SIZE
(
command_names
);
i
++
)
{
for
(
uint
i
=
0
;
i
<
ARRAY_SIZE
(
command_names
);
i
++
)
{
if
(
strcmp
(
command
,
command_names
[
i
])
==
0
)
{
if
(
strcmp
(
command
,
command_names
[
i
])
==
0
)
{
...
@@ -470,6 +470,12 @@ void CompilerOracle::parse_from_line(char* line) {
...
@@ -470,6 +470,12 @@ void CompilerOracle::parse_from_line(char* line) {
OracleCommand
command
=
parse_command_name
(
line
,
&
bytes_read
);
OracleCommand
command
=
parse_command_name
(
line
,
&
bytes_read
);
line
+=
bytes_read
;
line
+=
bytes_read
;
if
(
command
==
UnknownCommand
)
{
tty
->
print_cr
(
"CompilerOracle: unrecognized line"
);
tty
->
print_cr
(
"
\"
%s
\"
"
,
original_line
);
return
;
}
if
(
command
==
QuietCommand
)
{
if
(
command
==
QuietCommand
)
{
_quiet
=
true
;
_quiet
=
true
;
return
;
return
;
...
@@ -498,7 +504,7 @@ void CompilerOracle::parse_from_line(char* line) {
...
@@ -498,7 +504,7 @@ void CompilerOracle::parse_from_line(char* line) {
line
+=
bytes_read
;
line
+=
bytes_read
;
// there might be a signature following the method.
// there might be a signature following the method.
// signatures always begin with ( so match that by hand
// signatures always begin with ( so match that by hand
if
(
1
==
sscanf
(
line
,
"%*[
\t
](%254[);/"
RANGEBASE
"]%n"
,
sig
+
1
,
&
bytes_read
))
{
if
(
1
==
sscanf
(
line
,
"%*[
\t
](%254[
[
);/"
RANGEBASE
"]%n"
,
sig
+
1
,
&
bytes_read
))
{
sig
[
0
]
=
'('
;
sig
[
0
]
=
'('
;
line
+=
bytes_read
;
line
+=
bytes_read
;
signature
=
oopFactory
::
new_symbol_handle
(
sig
,
CHECK
);
signature
=
oopFactory
::
new_symbol_handle
(
sig
,
CHECK
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录