test/java/lang/ProcessBuilder/SecurityManagerClinit.java

Print this page




  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 }