< prev index next >

test/java/security/AccessController/DoPrivAccompliceTest.java

Print this page

        

*** 21,98 **** * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ ! import java.io.File; import java.io.FileWriter; import java.io.IOException; ! import java.net.URI; ! import java.util.ArrayList; ! import java.util.Arrays; ! import java.util.List; /* * @test * @bug 8048362 - * @compile ../../../lib/testlibrary/JavaToolUtils.java - * DoPrivAccomplice.java DoPrivTest.java * @summary Tests the doPrivileged with accomplice Generate two jars * (DoPrivTest.jar and DoPrivAccomplice.jar) and grant permission to * DoPrivAccmplice.jar for reading user.home property from a PrivilagedAction. * Run DoPrivTest.jar and try to access user.home property using * DoPrivAccmplice.jar. ! * @modules jdk.compiler * @run main/othervm DoPrivAccompliceTest */ public class DoPrivAccompliceTest { ! private static final String PWD = System.getProperty("test.classes", "./"); ! private static final String ACTION_SOURCE = "DoPrivAccomplice"; ! private static final String TEST_SOURCE = "DoPrivTest"; ! ! public static void createPolicyFile(URI codebaseURL) throws IOException { ! String codebase = codebaseURL.toString(); String quotes = "\""; StringBuilder policyFile = new StringBuilder(); ! policyFile.append("grant codeBase ").append(quotes). ! append(codebase).append(quotes).append("{\n"). ! append("permission java.util.PropertyPermission "). ! append(quotes).append("user.name").append(quotes). ! append(",").append(quotes).append("read").append(quotes). ! append(";\n};"); ! try (FileWriter writer = new FileWriter(new File(PWD, "java.policy"))) { writer.write(policyFile.toString()); - writer.close(); } catch (IOException e) { ! System.err.println("Error while creating policy file"); ! throw e; } } public static void main(String[] args) throws Exception { ! final File class1 = new File(PWD, ACTION_SOURCE + ".class"); ! final File class2 = new File(PWD, TEST_SOURCE + ".class"); ! final File jarFile1 = new File(PWD, ACTION_SOURCE + ".jar"); ! final File jarFile2 = new File(PWD, TEST_SOURCE + ".jar"); ! System.out.println("Compilation successfull"); ! JavaToolUtils.createJar(jarFile1, Arrays.asList(new File[]{class1})); System.out.println("Created jar file " + jarFile1); ! JavaToolUtils.createJar(jarFile2, Arrays.asList(new File[]{class2})); System.out.println("Created jar file " + jarFile2); - createPolicyFile(jarFile1.toURI()); ! List<String> commands = new ArrayList<>(); ! final String pathSepartor = System.getProperty("path.separator"); ! commands.add("-Djava.security.manager"); ! commands.add("-Djava.security.policy=" + PWD + "/java.policy"); ! commands.add("-classpath"); ! commands.add(PWD + "/" + TEST_SOURCE + ".jar" + pathSepartor ! + PWD + "/" + ACTION_SOURCE + ".jar"); ! commands.add(TEST_SOURCE); ! if (JavaToolUtils.runJava(commands) == 0) { System.out.println("Test PASSES"); } - } - } --- 21,112 ---- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ ! import jdk.test.lib.process.OutputAnalyzer; ! import jdk.test.lib.process.ProcessTools; ! import jdk.test.lib.util.JarUtils; ! import java.io.FileWriter; import java.io.IOException; ! import java.nio.file.Path; ! import java.nio.file.Paths; /* * @test * @bug 8048362 * @summary Tests the doPrivileged with accomplice Generate two jars * (DoPrivTest.jar and DoPrivAccomplice.jar) and grant permission to * DoPrivAccmplice.jar for reading user.home property from a PrivilagedAction. * Run DoPrivTest.jar and try to access user.home property using * DoPrivAccmplice.jar. ! * ! * @library /test/lib ! * * @run main/othervm DoPrivAccompliceTest */ public class DoPrivAccompliceTest { + private static final String ACTION_SOURCE = DoPrivAccomplice.class.getName(); + private static final String TEST_SOURCE = DoPrivTest.class.getName(); ! private static void createPolicyFile(Path jarFile, Path policy) { ! String codebase = jarFile.toFile().toURI().toString(); String quotes = "\""; StringBuilder policyFile = new StringBuilder(); ! policyFile.append("grant codeBase ") ! .append(quotes).append(codebase).append(quotes) ! .append("{\n") ! .append("permission java.util.PropertyPermission ") ! .append(quotes).append("user.name").append(quotes) ! .append(",") ! .append(quotes).append("read").append(quotes) ! .append(";\n};"); ! try (FileWriter writer = new FileWriter(policy.toFile())) { writer.write(policyFile.toString()); } catch (IOException e) { ! throw new Error("Error while creating policy file " + policy, e); } } public static void main(String[] args) throws Exception { ! // copy class files to pwd ! ClassFileInstaller.main(ACTION_SOURCE, TEST_SOURCE); ! Path pwd = Paths.get("."); ! Path jarFile1 = pwd.resolve(ACTION_SOURCE + ".jar").toAbsolutePath(); ! Path jarFile2 = pwd.resolve(TEST_SOURCE + ".jar").toAbsolutePath(); ! Path policy = pwd.resolve("java.policy").toAbsolutePath(); ! ! JarUtils.createJar(jarFile1.toString(), ACTION_SOURCE + ".class"); System.out.println("Created jar file " + jarFile1); ! JarUtils.createJar(jarFile2.toString(), TEST_SOURCE + ".class"); System.out.println("Created jar file " + jarFile2); ! ! String pathSepartor = System.getProperty("path.separator"); ! String[] commands = { ! "-Djava.security.manager", ! "-Djava.security.policy=" + policy, ! "-classpath", jarFile1 + pathSepartor + jarFile2, ! TEST_SOURCE ! }; ! ! String userName = System.getProperty("user.name"); ! ! createPolicyFile(jarFile1, policy); ! System.out.println("Created policy for " + jarFile1); ! ProcessTools.executeTestJava(commands) ! .shouldHaveExitValue(0) ! .shouldContain(userName) ! .stderrShouldBeEmpty(); ! ! createPolicyFile(jarFile2, policy); ! System.out.println("Created policy for " + jarFile2); ! ProcessTools.executeTestJava(commands) ! .shouldNotHaveExitValue(0) ! .shouldNotContain(userName) ! .stderrShouldContain("java.security.AccessControlException"); ! System.out.println("Test PASSES"); } }
< prev index next >