6891707: Eliminate the java.io.FilePermission dependency on PolicyFile
authormchung
Thu, 15 Oct 2009 17:36:53 -0700
changeset 4053 c2f8e57ba2f8
parent 4051 d5cdbf6529a9
child 4054 3138a1ecaabe
6891707: Eliminate the java.io.FilePermission dependency on PolicyFile Summary: Replace call to PolicyFile.canonPath with its own implementation Reviewed-by: alanb, mullan
jdk/src/share/classes/java/io/FilePermission.java
jdk/src/share/classes/sun/security/provider/PolicyFile.java
--- a/jdk/src/share/classes/java/io/FilePermission.java	Thu Oct 15 14:02:34 2009 +0100
+++ b/jdk/src/share/classes/java/io/FilePermission.java	Thu Oct 15 17:36:53 2009 -0700
@@ -209,7 +209,17 @@
         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;
                 }
--- a/jdk/src/share/classes/sun/security/provider/PolicyFile.java	Thu Oct 15 14:02:34 2009 +0100
+++ b/jdk/src/share/classes/sun/security/provider/PolicyFile.java	Thu Oct 15 17:36:53 2009 -0700
@@ -1832,8 +1832,9 @@
         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();