< 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 >