Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
1c7191a2
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看板
提交
1c7191a2
编写于
10月 09, 2008
作者:
A
alanb
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6721753: File.createTempFile produces guessable file names
Reviewed-by: sherman
上级
15432140
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
28 deletion
+26
-28
src/share/classes/java/io/File.java
src/share/classes/java/io/File.java
+26
-28
未找到文件。
src/share/classes/java/io/File.java
浏览文件 @
1c7191a2
...
@@ -33,9 +33,9 @@ import java.net.URISyntaxException;
...
@@ -33,9 +33,9 @@ import java.net.URISyntaxException;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Hashtable
;
import
java.util.Hashtable
;
import
java.util.Random
;
import
java.security.AccessController
;
import
java.security.AccessController
;
import
java.security.AccessControlException
;
import
java.security.AccessControlException
;
import
java.security.SecureRandom
;
import
sun.security.action.GetPropertyAction
;
import
sun.security.action.GetPropertyAction
;
...
@@ -1678,28 +1678,28 @@ public class File
...
@@ -1678,28 +1678,28 @@ public class File
/* -- Temporary files -- */
/* -- Temporary files -- */
private
static
final
Object
tmpFileLock
=
new
Object
();
// lazy initialization of SecureRandom and temporary file directory
private
static
class
LazyInitialization
{
static
final
SecureRandom
random
=
new
SecureRandom
();
private
static
int
counter
=
-
1
;
/* Protected by tmpFileLock */
static
final
String
temporaryDirectory
=
temporaryDirectory
();
static
String
temporaryDirectory
()
{
return
fs
.
normalize
(
AccessController
.
doPrivileged
(
new
GetPropertyAction
(
"java.io.tmpdir"
)));
}
}
private
static
File
generateFile
(
String
prefix
,
String
suffix
,
File
dir
)
private
static
File
generateFile
(
String
prefix
,
String
suffix
,
File
dir
)
throws
IOException
throws
IOException
{
{
if
(
counter
==
-
1
)
{
long
n
=
LazyInitialization
.
random
.
nextLong
();
counter
=
new
Random
().
nextInt
()
&
0xffff
;
if
(
n
==
Long
.
MIN_VALUE
)
{
n
=
0
;
// corner case
}
else
{
n
=
Math
.
abs
(
n
);
}
}
counter
++;
return
new
File
(
dir
,
prefix
+
Long
.
toString
(
n
)
+
suffix
);
return
new
File
(
dir
,
prefix
+
Integer
.
toString
(
counter
)
+
suffix
);
}
private
static
String
tmpdir
;
/* Protected by tmpFileLock */
private
static
String
getTempDir
()
{
if
(
tmpdir
==
null
)
tmpdir
=
fs
.
normalize
(
AccessController
.
doPrivileged
(
new
GetPropertyAction
(
"java.io.tmpdir"
)));
return
tmpdir
;
}
}
private
static
boolean
checkAndCreate
(
String
filename
,
SecurityManager
sm
)
private
static
boolean
checkAndCreate
(
String
filename
,
SecurityManager
sm
)
...
@@ -1795,18 +1795,16 @@ public class File
...
@@ -1795,18 +1795,16 @@ public class File
if
(
prefix
.
length
()
<
3
)
if
(
prefix
.
length
()
<
3
)
throw
new
IllegalArgumentException
(
"Prefix string too short"
);
throw
new
IllegalArgumentException
(
"Prefix string too short"
);
String
s
=
(
suffix
==
null
)
?
".tmp"
:
suffix
;
String
s
=
(
suffix
==
null
)
?
".tmp"
:
suffix
;
synchronized
(
tmpFileLock
)
{
if
(
directory
==
null
)
{
if
(
directory
==
null
)
{
String
tmpDir
=
LazyInitialization
.
temporaryDirectory
();
String
tmpDir
=
getTempDir
();
directory
=
new
File
(
tmpDir
,
fs
.
prefixLength
(
tmpDir
));
directory
=
new
File
(
tmpDir
,
fs
.
prefixLength
(
tmpDir
));
}
SecurityManager
sm
=
System
.
getSecurityManager
();
File
f
;
do
{
f
=
generateFile
(
prefix
,
s
,
directory
);
}
while
(!
checkAndCreate
(
f
.
getPath
(),
sm
));
return
f
;
}
}
SecurityManager
sm
=
System
.
getSecurityManager
();
File
f
;
do
{
f
=
generateFile
(
prefix
,
s
,
directory
);
}
while
(!
checkAndCreate
(
f
.
getPath
(),
sm
));
return
f
;
}
}
/**
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录