# HG changeset patch # User Elliott Baron # Date 1366316455 14400 # Node ID 2e7ef54df229575caf80652ede0b5444e5abf57e # Parent db270ea37a50fe40886db15b1559884ef5e1ba9a Give xalan/xerces access to their own internal packages. 2013-04-18 Elliott Baron * Makefile.am: (ICEDTEA_PATCHES): Add new patch. * patches/object-factory-cl-internal.patch: Patch to give xalan/xerces access to their own internal packages. * NEWS: Updated. diff -r db270ea37a50 -r 2e7ef54df229 ChangeLog --- a/ChangeLog Wed Apr 24 09:09:25 2013 +0100 +++ b/ChangeLog Thu Apr 18 16:20:55 2013 -0400 @@ -1,3 +1,12 @@ +2013-04-18 Elliott Baron + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patch. + * patches/object-factory-cl-internal.patch: + Patch to give xalan/xerces access to their own internal + packages. + * NEWS: Updated. + 2013-04-17 Andrew John Hughes * ChangeLog: diff -r db270ea37a50 -r 2e7ef54df229 Makefile.am --- a/Makefile.am Wed Apr 24 09:09:25 2013 +0100 +++ b/Makefile.am Thu Apr 18 16:20:55 2013 -0400 @@ -570,7 +570,8 @@ patches/fix_get_stack_bounds_leak.patch \ patches/openjdk/7197906-handle_32_bit_shifts.patch \ patches/aarch64.patch \ - patches/jaxws-tempfiles-ioutils-6.patch + patches/jaxws-tempfiles-ioutils-6.patch \ + patches/object-factory-cl-internal.patch if WITH_RHINO ICEDTEA_PATCHES += \ diff -r db270ea37a50 -r 2e7ef54df229 NEWS --- a/NEWS Wed Apr 24 09:09:25 2013 +0100 +++ b/NEWS Thu Apr 18 16:20:55 2013 -0400 @@ -65,6 +65,7 @@ - PR1336: Bootstrap failure on Fedora 17/18 - PR1319: Correct #ifdef to #if - PR1402: Support glibc < 2.17 with AArch64 patch + - Give xalan/xerces access to their own internal packages. New in release 1.12.4 (2013-03-04): diff -r db270ea37a50 -r 2e7ef54df229 patches/object-factory-cl-internal.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/object-factory-cl-internal.patch Thu Apr 18 16:20:55 2013 -0400 @@ -0,0 +1,384 @@ +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/ObjectFactory.java 2013-04-18 15:31:29.843692610 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/lib/ObjectFactory.java 2013-04-18 15:24:09.491130619 -0400 +@@ -54,6 +54,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = +@@ -482,10 +484,15 @@ + SecurityManager security = System.getSecurityManager(); + try{ + if (security != null){ +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + }catch(SecurityException e){ + throw e; +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xslt/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xslt/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xslt/ObjectFactory.java 2013-04-18 15:31:29.878692813 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xslt/ObjectFactory.java 2013-04-18 15:22:55.299696537 -0400 +@@ -54,6 +54,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = +@@ -484,10 +486,15 @@ + SecurityManager security = System.getSecurityManager(); + try{ + if (security != null){ +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + }catch(SecurityException e){ + throw e; +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/cmdline/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/cmdline/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/cmdline/ObjectFactory.java 2013-04-18 15:31:29.886692859 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/cmdline/ObjectFactory.java 2013-04-18 15:26:22.636907700 -0400 +@@ -54,6 +54,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = +@@ -484,10 +486,15 @@ + SecurityManager security = System.getSecurityManager(); + try{ + if (security != null){ +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + }catch(SecurityException e){ + throw e; +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ObjectFactory.java 2013-04-18 15:31:29.915693027 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/ObjectFactory.java 2013-04-18 15:25:02.786441953 -0400 +@@ -54,6 +54,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = +@@ -484,10 +486,15 @@ + SecurityManager security = System.getSecurityManager(); + try{ + if (security != null){ +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + }catch(SecurityException e){ + throw e; +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ObjectFactory.java 2013-04-18 15:31:29.965693317 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ObjectFactory.java 2013-04-18 15:27:11.820194171 -0400 +@@ -54,6 +54,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = +@@ -483,12 +485,17 @@ + //class. Restrict the access to the package classes as specified in java.security policy. + SecurityManager security = System.getSecurityManager(); + try{ +- if (security != null){ ++ if (security != null){ ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { + final int lastDot = className.lastIndexOf("."); + String packageName = className; + if (lastDot != -1) packageName = className.substring(0, lastDot); + security.checkPackageAccess(packageName); +- } ++ } ++ } + }catch(SecurityException e){ + throw e; + } +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/dom/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/dom/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/dom/ObjectFactory.java 2013-04-18 15:31:29.987693445 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/dom/ObjectFactory.java 2013-04-18 15:29:26.543977437 -0400 +@@ -54,6 +54,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = +@@ -484,10 +486,15 @@ + SecurityManager security = System.getSecurityManager(); + try{ + if (security != null){ +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + }catch(SecurityException e){ + throw e; +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/runtime/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/runtime/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/runtime/ObjectFactory.java 2013-04-18 15:31:30.002693531 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/runtime/ObjectFactory.java 2013-04-18 15:28:18.404581537 -0400 +@@ -54,6 +54,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = +@@ -484,10 +486,15 @@ + SecurityManager security = System.getSecurityManager(); + try{ + if (security != null){ +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + }catch(SecurityException e){ + throw e; +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/trax/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/trax/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/trax/ObjectFactory.java 2013-04-18 15:31:30.018693624 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xalan/internal/xsltc/trax/ObjectFactory.java 2013-04-18 15:30:14.690256878 -0400 +@@ -54,6 +54,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = +@@ -484,10 +486,15 @@ + SecurityManager security = System.getSecurityManager(); + try{ + if (security != null){ +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + }catch(SecurityException e){ + throw e; +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/dom/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/dom/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/dom/ObjectFactory.java 2013-04-18 15:31:30.067693908 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/dom/ObjectFactory.java 2013-04-18 14:42:41.980947500 -0400 +@@ -49,6 +49,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = "xerces.properties"; +@@ -376,10 +378,15 @@ + //restrict the access to package as speicified in java.security policy + SecurityManager security = System.getSecurityManager(); + if (security != null) { +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + Class providerClass; + if (cl == null) { +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/impl/dv/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/impl/dv/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/impl/dv/ObjectFactory.java 2013-04-18 15:31:30.143694349 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/impl/dv/ObjectFactory.java 2013-04-18 13:53:05.834977729 -0400 +@@ -49,6 +49,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = "xerces.properties"; +@@ -376,10 +378,15 @@ + //restrict the access to package as speicified in java.security policy + SecurityManager security = System.getSecurityManager(); + if (security != null) { +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + Class providerClass; + if (cl == null) { +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/parsers/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/parsers/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/parsers/ObjectFactory.java 2013-04-18 15:31:30.445696098 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/parsers/ObjectFactory.java 2013-04-18 13:53:05.834977729 -0400 +@@ -47,6 +47,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = "xerces.properties"; +@@ -374,10 +376,15 @@ + //restrict the access to package as speicified in java.security policy + SecurityManager security = System.getSecurityManager(); + if (security != null) { +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + Class providerClass; + if (cl == null) { +diff -ru openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/xinclude/ObjectFactory.java openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/xinclude/ObjectFactory.java +--- openjdk/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/xinclude/ObjectFactory.java 2013-04-18 15:31:30.498696405 -0400 ++++ openjdk.new/jaxp/drop_included/jaxp_src/src/com/sun/org/apache/xerces/internal/xinclude/ObjectFactory.java 2013-04-18 14:43:31.310231085 -0400 +@@ -47,6 +47,8 @@ + // + // Constants + // ++ private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; ++ private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + + // name of default properties file to look for in JDK's jre/lib directory + private static final String DEFAULT_PROPERTIES_FILENAME = "xerces.properties"; +@@ -374,10 +376,15 @@ + //restrict the access to package as speicified in java.security policy + SecurityManager security = System.getSecurityManager(); + if (security != null) { +- final int lastDot = className.lastIndexOf("."); +- String packageName = className; +- if (lastDot != -1) packageName = className.substring(0, lastDot); +- security.checkPackageAccess(packageName); ++ if (className.startsWith(XALAN_INTERNAL) || ++ className.startsWith(XERCES_INTERNAL)) { ++ cl = null; ++ } else { ++ final int lastDot = className.lastIndexOf("."); ++ String packageName = className; ++ if (lastDot != -1) packageName = className.substring(0, lastDot); ++ security.checkPackageAccess(packageName); ++ } + } + Class providerClass; + if (cl == null) {