changeset 76:0031070f98b0

OPENJDK6-9: Backport part of "6657673: Issues with JAXP" which applies after 7133220. Reviewed-by: omajid
author andrew
date Mon, 15 Jul 2013 22:04:09 +0100
parents 3527dd1d8d99
children d23a262afc5d
files drop_included/jaxp_src/src/javax/xml/parsers/FactoryFinder.java drop_included/jaxp_src/src/javax/xml/transform/FactoryFinder.java
diffstat 2 files changed, 18 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/drop_included/jaxp_src/src/javax/xml/parsers/FactoryFinder.java	Mon Jul 15 22:00:55 2013 +0100
+++ b/drop_included/jaxp_src/src/javax/xml/parsers/FactoryFinder.java	Mon Jul 15 22:04:09 2013 +0100
@@ -42,7 +42,7 @@
  * @author Huizhe.Wang@oracle.com
  */
 class FactoryFinder {
-    
+    private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xerces.internal";
     /**
      * Internal debug flag.
      */
@@ -166,6 +166,14 @@
     static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader)
         throws ConfigurationError
     {
+        // make sure we have access to restricted packages
+        if (System.getSecurityManager() != null) {
+            if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
+                cl = null;
+                useBSClsLoader = true;
+            }
+        }
+
         try {
             Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader);
             Object instance = providerClass.newInstance();
--- a/drop_included/jaxp_src/src/javax/xml/transform/FactoryFinder.java	Mon Jul 15 22:00:55 2013 +0100
+++ b/drop_included/jaxp_src/src/javax/xml/transform/FactoryFinder.java	Mon Jul 15 22:04:09 2013 +0100
@@ -42,6 +42,7 @@
  * @author Huizhe.Wang@oracle.com
  */
 class FactoryFinder {
+    private static final String DEFAULT_PACKAGE = "com.sun.org.apache.xalan.internal.";
     
     /**
      * Internal debug flag.
@@ -166,6 +167,14 @@
     static Object newInstance(String className, ClassLoader cl, boolean doFallback, boolean useBSClsLoader)
         throws ConfigurationError
     {
+        // make sure we have access to restricted packages
+        if (System.getSecurityManager() != null) {
+            if (className != null && className.startsWith(DEFAULT_PACKAGE)) {
+                cl = null;
+                useBSClsLoader = true;
+            }
+        }
+
         try {
             Class providerClass = getProviderClass(className, cl, doFallback, useBSClsLoader);
             Object instance = providerClass.newInstance();