Index: modules/luni/src/test/java/tests/api/java/net/InetAddressTest.java =================================================================== --- modules/luni/src/test/java/tests/api/java/net/InetAddressTest.java (revision 466937) +++ modules/luni/src/test/java/tests/api/java/net/InetAddressTest.java (working copy) @@ -498,6 +498,9 @@ if (permission.getName().equals("setSecurityManager")){ return; } + if (permission.getName().equals("3d.com")){ + throw new SecurityException(); + } super.checkPermission(permission); } } Index: modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/SecurityManagerTest.java =================================================================== --- modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/SecurityManagerTest.java (revision 466937) +++ modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/SecurityManagerTest.java (working copy) @@ -16,6 +16,10 @@ package org.apache.harmony.luni.tests.java.lang; +import java.io.File; + +import tests.support.Support_Exec; + import junit.framework.TestCase; public class SecurityManagerTest extends TestCase { @@ -26,6 +30,7 @@ public void test_checkMemberAccessLjava_lang_ClassI() { MutableSecurityManager sm = new MutableSecurityManager(); sm.addPermission(MutableSecurityManager.SET_SECURITY_MANAGER); + sm.denyPermission("accessDeclaredMembers"); System.setSecurityManager(sm); try { try { @@ -48,19 +53,42 @@ /** * @tests java.lang.SecurityManager#checkPermission(java.security.Permission) */ - public void test_checkPermissionLjava_security_Permission() { - MutableSecurityManager sm = new MutableSecurityManager(); - sm.addPermission(MutableSecurityManager.SET_SECURITY_MANAGER); - System.setSecurityManager(sm); - try { + public void test_checkPermissionLjava_security_Permission() + throws Exception { + + // tmp user home to avoid presence of ${user.home}/.java.policy + String tmpUserHome = System.getProperty("java.io.tmpdir") + + File.separatorChar + "tmpUserHomeForSecurityManagerTest"; + File dir = new File(tmpUserHome); + if (!dir.exists()) { + dir.mkdirs(); + dir.deleteOnExit(); + } + String javaPolycy = tmpUserHome + File.separatorChar + ".java.policy"; + assertFalse("There should be no java policy file: " + javaPolycy, + new File(javaPolycy).exists()); + + String[] arg = new String[] { "-Duser.home=" + tmpUserHome, + checkPermissionLjava_security_PermissionTesting.class.getName() }; + + Support_Exec.execJava(arg, null, true); + } + + private static class checkPermissionLjava_security_PermissionTesting { + public static void main(String[] args) { + MutableSecurityManager sm = new MutableSecurityManager(); + sm.addPermission(MutableSecurityManager.SET_SECURITY_MANAGER); + System.setSecurityManager(sm); try { - System.getSecurityManager().checkPermission( - new RuntimePermission("createClassLoader")); - fail("This should throw a SecurityException"); - } catch (SecurityException e) { + try { + System.getSecurityManager().checkPermission( + new RuntimePermission("createClassLoader")); + fail("This should throw a SecurityException"); + } catch (SecurityException e) { + } + } finally { + System.setSecurityManager(null); } - } finally { - System.setSecurityManager(null); } } Index: modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/MutableSecurityManager.java =================================================================== --- modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/MutableSecurityManager.java (revision 466937) +++ modules/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/MutableSecurityManager.java (working copy) @@ -25,6 +25,8 @@ static final RuntimePermission SET_SECURITY_MANAGER = new RuntimePermission("setSecurityManager"); private final Set permissions; + + private String deny; public MutableSecurityManager() { super(); @@ -49,12 +51,19 @@ void clearPermissions() { permissions.clear(); } + + void denyPermission(String name) { + deny = name; + } @Override public void checkPermission(Permission permission) { if (permissions.contains(permission)) { return; } + if (permission.getName().equals(deny)){ + throw new SecurityException(); + } super.checkPermission(permission); } }