8266345: (fs) Custom DefaultFileSystemProvider security related loops

Co-authored-by: Brian Burkhalter <bpb@openjdk.org>
Reviewed-by: bpb, chegar
This commit is contained in:
Sean Mullan 2021-07-12 14:54:38 +00:00
parent 999ced03cc
commit 4fc3180f75
3 changed files with 30 additions and 2 deletions

View file

@ -44,6 +44,7 @@ import java.util.concurrent.ConcurrentHashMap;
import jdk.internal.access.JavaSecurityAccess;
import jdk.internal.access.SharedSecrets;
import jdk.internal.util.StaticProperty;
import sun.nio.fs.DefaultFileSystemProvider;
import sun.security.util.*;
import sun.net.www.ParseUtil;
@ -276,6 +277,13 @@ public class PolicyFile extends java.security.Policy {
private static Set<URL> badPolicyURLs =
Collections.newSetFromMap(new ConcurrentHashMap<URL,Boolean>());
/**
* Use the platform's default file system to avoid recursive initialization
* issues when the VM is configured to use a custom file system provider.
*/
private static final java.nio.file.FileSystem builtInFS =
DefaultFileSystemProvider.theFileSystem();
/**
* Initializes the Policy object and reads the default policy
* configuration file(s) into the Policy object.
@ -475,7 +483,7 @@ public class PolicyFile extends java.security.Policy {
}
private void initDefaultPolicy(PolicyInfo newInfo) {
Path defaultPolicy = Path.of(StaticProperty.javaHome(),
Path defaultPolicy = builtInFS.getPath(StaticProperty.javaHome(),
"lib",
"security",
"default.policy");