提交 ec6afeaf 编写于 作者: M mchung

6891707: Eliminate the java.io.FilePermission dependency on PolicyFile

Summary: Replace call to PolicyFile.canonPath with its own implementation
Reviewed-by: alanb, mullan
上级 b2d3e995
......@@ -209,7 +209,17 @@ public final class FilePermission extends Permission implements Serializable {
cpath = AccessController.doPrivileged(new PrivilegedAction<String>() {
public String run() {
try {
return sun.security.provider.PolicyFile.canonPath(cpath);
String path = cpath;
if (cpath.endsWith("*")) {
// call getCanonicalPath with a path with wildcard character
// replaced to avoid calling it with paths that are
// intended to match all entries in a directory
path = path.substring(0, path.length()-1) + "-";
path = new File(path).getCanonicalPath();
return path.substring(0, path.length()-1) + "*";
} else {
return new File(path).getCanonicalPath();
}
} catch (IOException ioe) {
return cpath;
}
......
......@@ -1832,8 +1832,9 @@ public class PolicyFile extends java.security.Policy {
return canonCs;
}
// public for java.io.FilePermission
public static String canonPath(String path) throws IOException {
// Wrapper to return a canonical path that avoids calling getCanonicalPath()
// with paths that are intended to match all entries in the directory
private static String canonPath(String path) throws IOException {
if (path.endsWith("*")) {
path = path.substring(0, path.length()-1) + "-";
path = new File(path).getCanonicalPath();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册