37 public class SecurityManagerClinit { 38 private static class Policy extends java.security.Policy { 39 private Permissions perms; 40 41 public Policy(Permission... permissions) { 42 perms = new Permissions(); 43 for (Permission permission : permissions) 44 perms.add(permission); 45 } 46 47 public boolean implies(ProtectionDomain pd, Permission p) { 48 return perms.implies(p); 49 } 50 } 51 52 public static void main(String[] args) throws Throwable { 53 String javaExe = 54 System.getProperty("java.home") + 55 File.separator + "bin" + File.separator + "java"; 56 57 // A funky contrived security setup, just for bug repro purposes. 58 java.security.Security.setProperty("package.access", "java.util"); 59 60 final Policy policy = 61 new Policy 62 (new FilePermission("<<ALL FILES>>", "execute"), 63 new RuntimePermission("setSecurityManager")); 64 Policy.setPolicy(policy); 65 66 System.setSecurityManager(new SecurityManager()); 67 68 try { 69 String[] cmd = { javaExe, "-version" }; 70 Process p = Runtime.getRuntime().exec(cmd); 71 p.getOutputStream().close(); 72 p.getInputStream().close(); 73 p.getErrorStream().close(); 74 p.waitFor(); 75 } finally { 76 System.setSecurityManager(null); 77 } 78 } 79 } | 37 public class SecurityManagerClinit { 38 private static class Policy extends java.security.Policy { 39 private Permissions perms; 40 41 public Policy(Permission... permissions) { 42 perms = new Permissions(); 43 for (Permission permission : permissions) 44 perms.add(permission); 45 } 46 47 public boolean implies(ProtectionDomain pd, Permission p) { 48 return perms.implies(p); 49 } 50 } 51 52 public static void main(String[] args) throws Throwable { 53 String javaExe = 54 System.getProperty("java.home") + 55 File.separator + "bin" + File.separator + "java"; 56 57 final Policy policy = 58 new Policy 59 (new FilePermission("<<ALL FILES>>", "execute"), 60 new RuntimePermission("setSecurityManager")); 61 Policy.setPolicy(policy); 62 63 System.setSecurityManager(new SecurityManager()); 64 65 try { 66 String[] cmd = { javaExe, "-version" }; 67 Process p = Runtime.getRuntime().exec(cmd); 68 p.getOutputStream().close(); 69 p.getInputStream().close(); 70 p.getErrorStream().close(); 71 p.waitFor(); 72 } finally { 73 System.setSecurityManager(null); 74 } 75 } 76 } |