Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
86c34a39
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看板
提交
86c34a39
编写于
7月 21, 2017
作者:
I
igerasim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8184993: Jar file verification failing with SecurityException: digest missing xxx
Reviewed-by: sherman, mullan
上级
d1289255
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
64 addition
and
5 deletion
+64
-5
src/share/classes/java/util/zip/ZipFile.java
src/share/classes/java/util/zip/ZipFile.java
+19
-2
test/java/util/zip/ZipFile/ReadZip.java
test/java/util/zip/ZipFile/ReadZip.java
+45
-3
未找到文件。
src/share/classes/java/util/zip/ZipFile.java
浏览文件 @
86c34a39
...
...
@@ -90,12 +90,18 @@ class ZipFile implements ZipConstants, Closeable {
private
static
final
boolean
usemmap
;
private
static
final
boolean
ensuretrailingslash
;
static
{
// A system prpperty to disable mmap use to avoid vm crash when
// in-use zip file is accidently overwritten by others.
String
prop
=
sun
.
misc
.
VM
.
getSavedProperty
(
"sun.zip.disableMemoryMapping"
);
usemmap
=
(
prop
==
null
||
!(
prop
.
length
()
==
0
||
prop
.
equalsIgnoreCase
(
"true"
)));
// see getEntry() for details
prop
=
sun
.
misc
.
VM
.
getSavedProperty
(
"jdk.util.zip.ensureTrailingSlash"
);
ensuretrailingslash
=
prop
==
null
||
!
prop
.
equalsIgnoreCase
(
"false"
);
}
/**
...
...
@@ -309,7 +315,16 @@ class ZipFile implements ZipConstants, Closeable {
ensureOpen
();
jzentry
=
getEntry
(
jzfile
,
zc
.
getBytes
(
name
),
true
);
if
(
jzentry
!=
0
)
{
ZipEntry
ze
=
getZipEntry
(
name
,
jzentry
);
// If no entry is found for the specified 'name' and
// the 'name' does not end with a forward slash '/',
// the implementation tries to find the entry with a
// slash '/' appended to the end of the 'name', before
// returning null. When such entry is found, the name
// that actually is found (with a slash '/' attached)
// is used
// (disabled if jdk.util.zip.ensureTrailingSlash=false)
ZipEntry
ze
=
ensuretrailingslash
?
getZipEntry
(
null
,
jzentry
)
:
getZipEntry
(
name
,
jzentry
);
freeEntry
(
jzfile
,
jzentry
);
return
ze
;
}
...
...
@@ -560,7 +575,9 @@ class ZipFile implements ZipConstants, Closeable {
e
.
name
=
name
;
}
else
{
byte
[]
bname
=
getEntryBytes
(
jzentry
,
JZENTRY_NAME
);
if
(!
zc
.
isUTF8
()
&&
(
e
.
flag
&
EFS
)
!=
0
)
{
if
(
bname
==
null
)
{
e
.
name
=
""
;
// length 0 empty name
}
else
if
(!
zc
.
isUTF8
()
&&
(
e
.
flag
&
EFS
)
!=
0
)
{
e
.
name
=
zc
.
toStringUTF8
(
bname
,
bname
.
length
);
}
else
{
e
.
name
=
zc
.
toString
(
bname
,
bname
.
length
);
...
...
test/java/util/zip/ZipFile/ReadZip.java
浏览文件 @
86c34a39
/*
* Copyright (c) 1999, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
7
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -22,8 +22,11 @@
*/
/* @test
@bug 4241361 4842702 4985614 6646605 5032358 6923692
@summary Make sure we can read a zip file.
* @bug 4241361 4842702 4985614 6646605 5032358 6923692 6233323 8144977 8184993
* @summary Make sure we can read a zip file.
* @run main/othervm ReadZip
* @run main/othervm -Djdk.util.zip.ensureTrailingSlash=true ReadZip
* @run main/othervm -Djdk.util.zip.ensureTrailingSlash=false ReadZip
*/
import
java.io.*
;
...
...
@@ -103,6 +106,45 @@ public class ReadZip {
newZip
.
delete
();
}
// Read directory entry
try
{
try
(
FileOutputStream
fos
=
new
FileOutputStream
(
newZip
);
ZipOutputStream
zos
=
new
ZipOutputStream
(
fos
))
{
ZipEntry
ze
=
new
ZipEntry
(
"directory/"
);
zos
.
putNextEntry
(
ze
);
zos
.
closeEntry
();
}
try
(
ZipFile
zf
=
new
ZipFile
(
newZip
))
{
ZipEntry
ze
=
zf
.
getEntry
(
"directory/"
);
if
(
ze
==
null
||
!
ze
.
isDirectory
())
throw
new
RuntimeException
(
"read entry \"directory/\" failed"
);
try
(
InputStream
is
=
zf
.
getInputStream
(
ze
))
{
is
.
available
();
}
catch
(
Exception
x
)
{
x
.
printStackTrace
();
}
ze
=
zf
.
getEntry
(
"directory"
);
boolean
legacyBehavior
=
System
.
getProperty
(
"jdk.util.zip.ensureTrailingSlash"
,
"true"
)
.
equalsIgnoreCase
(
"false"
);
if
(
ze
==
null
||
(!
legacyBehavior
&&
!
ze
.
isDirectory
()))
throw
new
RuntimeException
(
"read entry \"directory\" failed"
);
try
(
InputStream
is
=
zf
.
getInputStream
(
ze
))
{
is
.
available
();
}
catch
(
Exception
x
)
{
x
.
printStackTrace
();
}
}
}
finally
{
newZip
.
delete
();
}
// Throw a FNF exception when read a non-existing zip file
try
{
unreached
(
new
ZipFile
(
new
File
(
System
.
getProperty
(
"test.src"
,
"."
),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录