summaryrefslogtreecommitdiff
path: root/java/openjdk6/files/icedtea/openjdk/8019979-better_access_test.patch
diff options
context:
space:
mode:
Diffstat (limited to 'java/openjdk6/files/icedtea/openjdk/8019979-better_access_test.patch')
-rw-r--r--java/openjdk6/files/icedtea/openjdk/8019979-better_access_test.patch154
1 files changed, 154 insertions, 0 deletions
diff --git a/java/openjdk6/files/icedtea/openjdk/8019979-better_access_test.patch b/java/openjdk6/files/icedtea/openjdk/8019979-better_access_test.patch
new file mode 100644
index 000000000000..5a92a81b86c1
--- /dev/null
+++ b/java/openjdk6/files/icedtea/openjdk/8019979-better_access_test.patch
@@ -0,0 +1,154 @@
+# HG changeset patch
+# User coffeys
+# Date 1373625375 -3600
+# Fri Jul 12 11:36:15 2013 +0100
+# Node ID 3b6f55f02122398ba662fb581352c9c9b102c2e3
+# Parent f7a7c7d70e4968eb99e42f812c59900f545d7fa7
+8019979: Replace CheckPackageAccess test with better one from closed repo
+Reviewed-by: mullan, robilad
+
+diff -r f7a7c7d70e49 -r 3b6f55f02122 test/java/lang/SecurityManager/CheckPackageAccess.java
+--- jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Fri Oct 25 22:18:57 2013 +0100
++++ jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Fri Jul 12 11:36:15 2013 +0100
+@@ -22,31 +22,128 @@
+ */
+
+ /*
+- * @test
+- * @bug 7146431 8000450
+- * @summary Test that internal packages cannot be accessed
++ * @test
++ * @bug 6741606 7146431 8000450
++ * @summary Make sure all restricted packages listed in the package.access
++ * property in the java.security file are blocked
++ * @run main/othervm CheckPackageAccess
+ */
+
++import java.security.Security;
++import java.util.Collections;
++import java.util.Arrays;
++import java.util.ArrayList;
++import java.util.List;
++import java.util.StringTokenizer;
++
++/*
++ * The main benefit of this test is to catch merge errors or other types
++ * of issues where one or more of the packages are accidentally
++ * removed. This is why the packages that are known to be restricted have to
++ * be explicitly listed below.
++ */
+ public class CheckPackageAccess {
+
++ /*
++ * This array should be updated whenever new packages are added to the
++ * package.access property in the java.security file
++ */
++ private static final String[] packages = {
++ "sun.",
++ "com.sun.corba.se.impl.",
++ "com.sun.xml.internal.",
++ "com.sun.imageio.",
++ "com.sun.istack.internal.",
++ "com.sun.jmx.",
++ "com.sun.proxy.",
++ "com.sun.org.apache.bcel.internal.",
++ "com.sun.org.apache.regexp.internal.",
++ "com.sun.org.apache.xerces.internal.",
++ "com.sun.org.apache.xpath.internal.",
++ "com.sun.org.apache.xalan.internal.extensions.",
++ "com.sun.org.apache.xalan.internal.lib.",
++ "com.sun.org.apache.xalan.internal.res.",
++ "com.sun.org.apache.xalan.internal.templates.",
++ "com.sun.org.apache.xalan.internal.utils.",
++ "com.sun.org.apache.xalan.internal.xslt.",
++ "com.sun.org.apache.xalan.internal.xsltc.cmdline.",
++ "com.sun.org.apache.xalan.internal.xsltc.compiler.",
++ "com.sun.org.apache.xalan.internal.xsltc.trax.",
++ "com.sun.org.apache.xalan.internal.xsltc.util.",
++ "com.sun.org.apache.xml.internal.res.",
++ "com.sun.org.apache.xml.internal.security.",
++ "com.sun.org.apache.xml.internal.serializer.utils.",
++ "com.sun.org.apache.xml.internal.utils.",
++ "com.sun.org.glassfish.",
++ "oracle.jrockit.jfr.",
++ "org.jcp.xml.dsig.internal.",
++ };
++
+ public static void main(String[] args) throws Exception {
++ List<String> pkgs = new ArrayList<>(Arrays.asList(packages));
++ String osName = System.getProperty("os.name");
++ if (osName.contains("OS X")) {
++ pkgs.add("apple."); // add apple package for OS X
++ } else if (osName.startsWith("Windows")) {
++ pkgs.add("com.sun.java.accessibility.");
++ }
+
+- String[] pkgs = new String[] {
+- "com.sun.corba.se.impl.",
+- "com.sun.org.apache.xerces.internal.utils.",
+- "com.sun.org.apache.xalan.internal.utils." };
+- SecurityManager sm = new SecurityManager();
+- System.setSecurityManager(sm);
+- for (String pkg : pkgs) {
+- System.out.println("Checking package access for " + pkg);
++ List<String> jspkgs =
++ getPackages(Security.getProperty("package.access"));
++
++ // Sort to ensure lists are comparable
++ Collections.sort(pkgs);
++ Collections.sort(jspkgs);
++
++ if (!pkgs.equals(jspkgs)) {
++ for (String p : pkgs)
++ if (!jspkgs.contains(p))
++ System.out.println("In golden set, but not in j.s file: " + p);
++ for (String p : jspkgs)
++ if (!pkgs.contains(p))
++ System.out.println("In j.s file, but not in golden set: " + p);
++
++
++ throw new RuntimeException("restricted packages are not " +
++ "consistent with java.security file");
++ }
++ System.setSecurityManager(new SecurityManager());
++ SecurityManager sm = System.getSecurityManager();
++ for (String pkg : packages) {
++ String subpkg = pkg + "foo";
+ try {
+ sm.checkPackageAccess(pkg);
+- throw new Exception("Expected PackageAccess SecurityException not thrown");
++ throw new RuntimeException("Able to access " + pkg +
++ " package");
++ } catch (SecurityException se) { }
++ try {
++ sm.checkPackageAccess(subpkg);
++ throw new RuntimeException("Able to access " + subpkg +
++ " package");
+ } catch (SecurityException se) { }
+ try {
+ sm.checkPackageDefinition(pkg);
+- throw new Exception("Expected PackageDefinition SecurityException not thrown");
++ throw new RuntimeException("Able to define class in " + pkg +
++ " package");
++ } catch (SecurityException se) { }
++ try {
++ sm.checkPackageDefinition(subpkg);
++ throw new RuntimeException("Able to define class in " + subpkg +
++ " package");
+ } catch (SecurityException se) { }
+ }
++ System.out.println("Test passed");
++ }
++
++ private static List<String> getPackages(String p) {
++ List<String> packages = new ArrayList<>();
++ if (p != null && !p.equals("")) {
++ StringTokenizer tok = new StringTokenizer(p, ",");
++ while (tok.hasMoreElements()) {
++ String s = tok.nextToken().trim();
++ packages.add(s);
++ }
++ }
++ return packages;
+ }
+ }