--- a/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java Thu Oct 17 20:27:44 2019 +0100
+++ b/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java Thu Oct 17 20:53:35 2019 +0100
@@ -25,8 +25,6 @@
package jdk.internal.loader;
-import java.io.File;
-import java.io.FilePermission;
import java.io.IOException;
import java.io.InputStream;
import java.lang.module.ModuleDescriptor;
@@ -40,7 +38,6 @@
import java.security.AccessController;
import java.security.CodeSigner;
import java.security.CodeSource;
-import java.security.Permission;
import java.security.PermissionCollection;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
@@ -65,6 +62,7 @@
import jdk.internal.module.ModulePatcher.PatchedModuleReader;
import jdk.internal.module.Resources;
import jdk.internal.vm.annotation.Stable;
+import sun.security.util.LazyCodeSourcePermissionCollection;
/**
@@ -183,7 +181,7 @@
this.parent = parent;
this.ucp = ucp;
- this.nameToModule = new ConcurrentHashMap<>();
+ this.nameToModule = new ConcurrentHashMap<>(32);
this.moduleToReader = new ConcurrentHashMap<>();
}
@@ -966,39 +964,9 @@
*/
@Override
protected PermissionCollection getPermissions(CodeSource cs) {
- PermissionCollection perms = super.getPermissions(cs);
-
- // add the permission to access the resource
- URL url = cs.getLocation();
- if (url == null)
- return perms;
-
- // avoid opening connection when URL is to resource in run-time image
- if (url.getProtocol().equals("jrt")) {
- perms.add(new RuntimePermission("accessSystemModules"));
- return perms;
- }
-
- // open connection to determine the permission needed
- try {
- Permission p = url.openConnection().getPermission();
- if (p != null) {
- // for directories then need recursive access
- if (p instanceof FilePermission) {
- String path = p.getName();
- if (path.endsWith(File.separator)) {
- path += "-";
- p = new FilePermission(path, "read");
- }
- }
- perms.add(p);
- }
- } catch (IOException ioe) { }
-
- return perms;
+ return new LazyCodeSourcePermissionCollection(super.getPermissions(cs), cs);
}
-
// -- miscellaneous supporting methods
/**