Mercurial > hg > release > icedtea7-forest-2.4 > jaxws
changeset 768:32ea8b1ed91a icedtea-2.4.5
Merge jdk7u51-b31
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"); + } }