changeset 768:32ea8b1ed91a icedtea-2.4.5

Merge jdk7u51-b31
author andrew
date Fri, 17 Jan 2014 20:22:47 +0000
parents 5aceb5a787b1 (current diff) eb79f394916e (diff)
children 4bd947cd146b
files .hgtags src/share/jaxws_classes/com/sun/tools/internal/jxc/model/nav/APTNavigator.java src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/EagerNType.java src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/NavigatorImpl.java src/share/jaxws_classes/com/sun/xml/internal/bind/api/JAXBRIContext.java src/share/jaxws_classes/com/sun/xml/internal/bind/api/TypeReference.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/ModelBuilder.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeAnyTypeImpl.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeElementInfoImpl.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeModelBuilder.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeTypeInfoSetImpl.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/nav/Navigator.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/nav/ReflectionNavigator.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/runtime/RuntimeTypeInfoSet.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/ElementBeanInfoImpl.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/JAXBContextImpl.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/ArrayProperty.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/SingleMapNodeProperty.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Accessor.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Lister.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/TransducedAccessor.java src/share/jaxws_classes/com/sun/xml/internal/ws/fault/SOAPFaultBuilder.java src/share/jaxws_classes/com/sun/xml/internal/ws/model/RuntimeModeler.java src/share/jaxws_classes/com/sun/xml/internal/ws/model/WrapperBeanGenerator.java
diffstat 3 files changed, 59 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Tue Jan 14 16:26:35 2014 -0500
+++ b/.hgtags	Fri Jan 17 20:22:47 2014 +0000
@@ -393,3 +393,20 @@
 c32c6a662d18d7195fc02125178c7543ce09bb00 jdk7u45-b30
 652eb396f959d66025120ffb1e778b606bfa68b3 icedtea-2.4.3
 942dddc2d84e28a0f79715693238a4e57016ca82 icedtea-2.4.4
+6802a1c098c48b2c8336e06f1565254759025bab jdk7u45-b31
+e040abab3625fbced33b30cba7c0307236268211 jdk7u45-b33
+e7df5d6b23c64509672d262187f51cde14db4e66 jdk7u45-b34
+5524cced32d3959d95ed414add230273bc10c38d jdk7u51-b00
+db9e3328f393313e52cbf3fee5236aa2429028d0 jdk7u51-b01
+92a4787cb3617005a329fb49247c550e8d7eb47a jdk7u51-b02
+2240523feb968d7921e22f6730c299246a4125d0 jdk7u51-b03
+c4f7cc35e47a4db7f380d62127dd2b49713f5552 jdk7u51-b04
+f8f0617c0310b638855add08df58c5b9cd7e2dcb jdk7u51-b05
+49fc29e8890c52e771beb3fd9bf3cbb9ecbf5f5e jdk7u51-b06
+da128632f015df99d0f6a53547484dbe44f722fb jdk7u51-b07
+71a314d55844bd6fe18aed56ce065b8df5c5cb82 jdk7u51-b08
+3b53d5ea0aec473b637cd0e49f227304bac848a7 jdk7u51-b09
+53a566a724e59f31bbd25a6a21f0f36adb36e82b jdk7u51-b10
+708507f4795cad1f0cf7e19ff2dc16fe9d441754 jdk7u51-b11
+7c7c2ea4b6808d0abf7fd48d11440d75b0c08d3a jdk7u51-b12
+81a1b110f70c37d2c2f0de7c0ef3bd2d04aba475 jdk7u51-b13
--- a/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/nav/ReflectionNavigator.java	Tue Jan 14 16:26:35 2014 -0500
+++ b/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/nav/ReflectionNavigator.java	Fri Jan 17 20:22:47 2014 +0000
@@ -58,7 +58,6 @@
 //  ---------------------------------------
 
     public Class getSuperClass(Class clazz) {
-        checkPackageAccess(clazz.getName());
         if (clazz == Object.class) {
             return null;
         }
@@ -266,12 +265,10 @@
     }
 
     public Collection<? extends Field> getDeclaredFields(Class clazz) {
-        checkPackageAccess(clazz.getName());
         return Arrays.asList(clazz.getDeclaredFields());
     }
 
     public Field getDeclaredField(Class clazz, String fieldName) {
-        checkPackageAccess(clazz.getName());
         try {
             return clazz.getDeclaredField(fieldName);
         } catch (NoSuchFieldException e) {
@@ -280,7 +277,6 @@
     }
 
     public Collection<? extends Method> getDeclaredMethods(Class clazz) {
-        checkPackageAccess(clazz.getName());
         return Arrays.asList(clazz.getDeclaredMethods());
     }
 
@@ -525,7 +521,6 @@
     }
 
     public Field[] getEnumConstants(Class clazz) {
-        checkPackageAccess(clazz.getName());
         try {
             Object[] values = clazz.getEnumConstants();
             Field[] fields = new Field[values.length];
@@ -556,7 +551,6 @@
     @Override
     public Class loadObjectFactory(Class referencePoint, String pkg) {
         String clName = pkg + ".ObjectFactory";
-        checkPackageAccess(clName);
         ClassLoader cl = referencePoint.getClassLoader();
         if (cl == null)
             cl = ClassLoader.getSystemClassLoader();
@@ -581,7 +575,7 @@
         // class Base<T> {
         //   T getX() { ... }
         // }
-        // to be overrided. Handling this correctly needs a careful implementation
+        // to be overriden. Handling this correctly needs a careful implementation
 
         String name = method.getName();
         Class[] params = method.getParameterTypes();
@@ -632,24 +626,4 @@
 
         return t;
     }
-
-    /**
-     * Checking if current thread can access class.
-     *
-     * @param clName name of the class to be checked
-     * @throws SecurityException is thrown if thread doesn't have privileges
-     */
-     static void  checkPackageAccess(String clName) {
-        SecurityManager sm = System.getSecurityManager();
-        if (sm == null)
-            return;
-        if (clName.startsWith("[")) { // array
-            int nameStart = clName.lastIndexOf('[') + 2;
-            if (nameStart > 1 && nameStart < clName.length())
-                clName = clName.substring(nameStart);
-        }
-        int packageEnd = clName.lastIndexOf('.');
-        if (packageEnd != -1)
-            sm.checkPackageAccess(clName.substring(0, packageEnd));
-    }
 }
--- a/src/share/jaxws_classes/com/sun/xml/internal/ws/fault/SOAPFaultBuilder.java	Tue Jan 14 16:26:35 2014 -0500
+++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/fault/SOAPFaultBuilder.java	Fri Jan 17 20:22:47 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -59,6 +59,12 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.lang.reflect.ReflectPermission;
+import java.security.AccessControlContext;
+import java.security.AccessController;
+import java.security.Permissions;
+import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.logging.Level;
@@ -546,10 +552,40 @@
             // ignore
         }
 
-        try {
-            JAXB_CONTEXT = (JAXBRIContext)JAXBContext.newInstance(SOAP11Fault.class, SOAP12Fault.class);
-        } catch (JAXBException e) {
-            throw new Error(e); // this must be a bug in our code
+        JAXB_CONTEXT = createJAXBContext();
+    }
+
+    private static JAXBRIContext createJAXBContext() {
+
+        // in jdk runtime doPrivileged is necessary since JAX-WS internal classes are in restricted packages
+        if (isJDKRuntime()) {
+            Permissions permissions = new Permissions();
+            permissions.add(new RuntimePermission("accessClassInPackage.com.sun." + "xml.internal.ws.fault"));
+            permissions.add(new ReflectPermission("suppressAccessChecks"));
+            return AccessController.doPrivileged(
+                    new PrivilegedAction<JAXBRIContext>() {
+                        @Override
+                        public JAXBRIContext run() {
+                            try {
+                                return (JAXBRIContext) JAXBContext.newInstance(SOAP11Fault.class, SOAP12Fault.class);
+                            } catch (JAXBException e) {
+                                throw new Error(e);
+                            }
+                        }
+                    },
+                    new AccessControlContext(new ProtectionDomain[]{new ProtectionDomain(null, permissions)})
+            );
+
+        } else {
+            try {
+                return (JAXBRIContext) JAXBContext.newInstance(SOAP11Fault.class, SOAP12Fault.class);
+            } catch (JAXBException e) {
+                throw new Error(e);
+            }
         }
     }
+
+    private static boolean isJDKRuntime() {
+        return SOAPFaultBuilder.class.getName().contains("internal");
+    }
 }