< prev index next >

test/javax/xml/jaxp/libs/jaxp/library/JAXPPolicyManager.java

Print this page

        

*** 21,30 **** --- 21,31 ---- * questions. */ package jaxp.library; + import java.net.URL; import java.security.CodeSource; import java.security.Permission; import java.security.PermissionCollection; import java.security.Permissions; import java.security.Policy;
*** 32,41 **** --- 33,43 ---- import java.security.SecurityPermission; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.PropertyPermission; + import java.util.Set; import java.util.StringJoiner; /* * This is a base class that every test class must extend if it needs to be run
*** 105,120 **** private void setDefaultPermissions() { //Permissions to set security manager and policy addPermission(new SecurityPermission("getPolicy")); addPermission(new SecurityPermission("setPolicy")); addPermission(new RuntimePermission("setSecurityManager")); - //Properties that jtreg and TestNG require - addPermission(new PropertyPermission("testng.show.stack.frames", "read")); addPermission(new PropertyPermission("test.src", "read")); - addPermission(new PropertyPermission("test.classes", "read")); - addPermission(new PropertyPermission("dataproviderthreadcount", "read")); - addPermission(new PropertyPermission("experimental", "read")); } /* * Add permission to the TestPolicy. * --- 107,117 ----
*** 161,170 **** --- 158,169 ---- /* * Simple Policy class that supports the required Permissions to validate the * JAXP concrete classes. */ class TestPolicy extends Policy { + private final static Set<String> TEST_JARS = + Set.of("jtreg.jar", "javatest.jar", "testng.jar", "jcommander.jar"); private final PermissionCollection permissions = new Permissions(); private ThreadLocal<Map<Integer, Permission>> transientPermissions = new ThreadLocal<>(); private ThreadLocal<Boolean> allowAll = new ThreadLocal<>();
*** 209,229 **** @Override public PermissionCollection getPermissions(CodeSource codesource) { return permissions; } @Override public boolean implies(ProtectionDomain domain, Permission perm) { if (allowAll()) return true; if (defaultPolicy.implies(domain, perm)) return true; if (permissions.implies(perm)) return true; ! else return tmpImplies(perm); } /* * Add a temporary permission in current thread context. This won't impact --- 208,241 ---- @Override public PermissionCollection getPermissions(CodeSource codesource) { return permissions; } + private boolean isTestMachineryDomain(ProtectionDomain domain) { + CodeSource cs = (domain == null) ? null : domain.getCodeSource(); + URL loc = (cs == null) ? null : cs.getLocation(); + String path = (loc == null) ? null : loc.getPath(); + return path != null && TEST_JARS.stream() + .filter(path::endsWith) + .findAny() + .isPresent(); + } + @Override public boolean implies(ProtectionDomain domain, Permission perm) { if (allowAll()) return true; if (defaultPolicy.implies(domain, perm)) return true; if (permissions.implies(perm)) return true; ! ! if (isTestMachineryDomain(domain)) ! return true; ! return tmpImplies(perm); } /* * Add a temporary permission in current thread context. This won't impact
< prev index next >