Mercurial > hg > icedtea8-forest > corba
changeset 1481:fbc3183924c8 icedtea-3.3.0pre01
Merge jdk8u112-b16
author | andrew |
---|---|
date | Thu, 12 Jan 2017 06:59:36 +0000 |
parents | c4ec5b18cec9 (current diff) 8ef3cc2bbc7d (diff) |
children | 4f11ee7c620a |
files | .hgtags |
diffstat | 3 files changed, 92 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Tue Nov 08 05:26:06 2016 +0000 +++ b/.hgtags Thu Jan 12 06:59:36 2017 +0000 @@ -703,3 +703,19 @@ a42cdfaa1218a636d2cd0b89a233362cdf32dd4b jdk8u111-b12 2214875a44e52789acf404b56543f613516ee498 jdk8u111-b13 9d3757e6da3538863558e7ca61e95b722c79ada2 icedtea-3.2.0 +7898951ff63c9ea721b8f669b9c749d6c3a2db99 jdk8u111-b14 +b87d82f5c33dfb55bfc81254044f28eea5d7424a jdk8u112-b00 +1f2394102288d9073652064784e31a3f52fc5d4b jdk8u112-b01 +40c934289deefd68915f6519d71a4e315c69117a jdk8u112-b02 +ddb3a8afe0ad50e04d360efa96aee78cb599ea72 jdk8u112-b03 +1d0047d03f04c0c15c7856e0f177b9e15e94a692 jdk8u112-b04 +b6cdfd0b4a9cff1ed1bb43ef7fb21dc4d2dfe7d8 jdk8u112-b06 +9d09ca09ea33e6af774914606f94960e5af4fc9b jdk8u112-b07 +0ac6b67980512ce025a280d42c05156293613dbb jdk8u112-b08 +0d9ae87a0dfe893922b730312d9173ad5dd5f0d6 jdk8u112-b09 +09fb07ae151729154a2dd253d06bdad8955c2685 jdk8u112-b10 +4363b0b339a482ec9eefee11dc5877a618e8c681 jdk8u112-b11 +be34a52805408eb5edaf3d8de4fae47632a757c5 jdk8u112-b12 +4d45315307323fcb9dd84c3f0b0a1dc76f2b3b5f jdk8u112-b13 +18bbb95d097e04ea2b88df8910056fe294da0149 jdk8u112-b14 +30f83ac389f06c38dc0b6f71b1d8344c01436a16 jdk8u112-b15
--- a/LICENSE Tue Nov 08 05:26:06 2016 +0000 +++ b/LICENSE Thu Jan 12 06:59:36 2017 +0000 @@ -3,7 +3,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -287,8 +287,8 @@ more details. You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., 59 - Temple Place, Suite 330, Boston, MA 02111-1307 USA + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail.
--- a/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Tue Nov 08 05:26:06 2016 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Thu Jan 12 06:59:36 2017 +0000 @@ -2230,7 +2230,7 @@ * REVISIT -- This code doesn't do what the comment says to when * getField() is null! */ - private void inputClassFields(Object o, Class cl, + private void inputClassFields(Object o, final Class<?> cl, ObjectStreamField[] fields, com.sun.org.omg.SendingContext.CodeBase sender) throws InvalidClassException, StreamCorruptedException, @@ -2264,21 +2264,31 @@ } try { - Class fieldCl = fields[i].getClazz(); + Class<?> fieldCl = fields[i].getClazz(); if ((objectValue != null) && (!fieldCl.isAssignableFrom( objectValue.getClass()))) { throw new IllegalArgumentException("Field mismatch"); } - Field classField = null; + Field declaredClassField = null; + final String inputStreamFieldName = fields[i].getName(); try { - classField = cl.getDeclaredField(fields[i].getName()); - } catch (NoSuchFieldException nsfEx) { - throw new IllegalArgumentException(nsfEx); + declaredClassField = getDeclaredField( cl, inputStreamFieldName); + } catch (PrivilegedActionException paEx) { + throw new IllegalArgumentException( + (NoSuchFieldException) paEx.getException()); } catch (SecurityException secEx) { - throw new IllegalArgumentException(secEx.getCause()); + throw new IllegalArgumentException(secEx); + } catch (NullPointerException npEx) { + continue; + } catch (NoSuchFieldException e) { + continue; } - Class<?> declaredFieldClass = classField.getType(); + + if (declaredClassField == null) { + continue; + } + Class<?> declaredFieldClass = declaredClassField.getType(); // check input field type is a declared field type // input field is a subclass of the declared field @@ -2291,15 +2301,24 @@ } bridge.putObject( o, fields[i].getFieldID(), objectValue ) ; // reflective code: fields[i].getField().set( o, objectValue ) ; - } catch (IllegalArgumentException e) { - ClassCastException exc = new ClassCastException("Assigning instance of class " + - objectValue.getClass().getName() + - " to field " + - currentClassDesc.getName() + - '#' + - fields[i].getField().getName()); - exc.initCause( e ) ; - throw exc ; + } catch (IllegalArgumentException iaEx) { + String objectValueClassName = "null"; + String currentClassDescClassName = "null"; + String fieldName = "null"; + if (objectValue != null) { + objectValueClassName = objectValue.getClass().getName(); + } + if (currentClassDesc != null) { + currentClassDescClassName = currentClassDesc.getName(); + } + if (fields[i] != null && fields[i].getField() != null) { + fieldName = fields[i].getField().getName(); + } + ClassCastException ccEx = new ClassCastException( + "Assigning instance of class " + objectValueClassName + + " to field " + currentClassDescClassName + '#' + fieldName); + ccEx.initCause( iaEx ) ; + throw ccEx ; } } // end : for loop } @@ -2595,9 +2614,9 @@ } - private static void setObjectField(Object o, Class c, String fieldName, Object v) { + private static void setObjectField(Object o, Class<?> c, String fieldName, Object v) { try { - Field fld = c.getDeclaredField( fieldName ) ; + Field fld = getDeclaredField( c, fieldName ) ; Class fieldCl = fld.getType(); if(v != null && !fieldCl.isInstance(v)) { throw new Exception(); @@ -2617,10 +2636,10 @@ } } - private static void setBooleanField(Object o, Class c, String fieldName, boolean v) + private static void setBooleanField(Object o, Class<?> c, String fieldName, boolean v) { try { - Field fld = c.getDeclaredField( fieldName ) ; + Field fld = getDeclaredField( c, fieldName ) ; if ((fld != null) && (fld.getType() == Boolean.TYPE)) { long key = bridge.objectFieldOffset( fld ) ; bridge.putBoolean( o, key, v ) ; @@ -2640,10 +2659,10 @@ } } - private static void setByteField(Object o, Class c, String fieldName, byte v) + private static void setByteField(Object o, Class<?> c, String fieldName, byte v) { try { - Field fld = c.getDeclaredField( fieldName ) ; + Field fld = getDeclaredField( c, fieldName ) ; if ((fld != null) && (fld.getType() == Byte.TYPE)) { long key = bridge.objectFieldOffset( fld ) ; bridge.putByte( o, key, v ) ; @@ -2663,10 +2682,10 @@ } } - private static void setCharField(Object o, Class c, String fieldName, char v) + private static void setCharField(Object o, Class<?> c, String fieldName, char v) { try { - Field fld = c.getDeclaredField( fieldName ) ; + Field fld = getDeclaredField( c, fieldName ) ; if ((fld != null) && (fld.getType() == Character.TYPE)) { long key = bridge.objectFieldOffset( fld ) ; bridge.putChar( o, key, v ) ; @@ -2686,10 +2705,10 @@ } } - private static void setShortField(Object o, Class c, String fieldName, short v) + private static void setShortField(Object o, Class<?> c, String fieldName, short v) { try { - Field fld = c.getDeclaredField( fieldName ) ; + Field fld = getDeclaredField( c, fieldName ) ; if ((fld != null) && (fld.getType() == Short.TYPE)) { long key = bridge.objectFieldOffset( fld ) ; bridge.putShort( o, key, v ) ; @@ -2709,10 +2728,10 @@ } } - private static void setIntField(Object o, Class c, String fieldName, int v) + private static void setIntField(Object o, final Class<?> c, final String fieldName, int v) { try { - Field fld = c.getDeclaredField( fieldName ) ; + Field fld = getDeclaredField( c, fieldName ) ; if ((fld != null) && (fld.getType() == Integer.TYPE)) { long key = bridge.objectFieldOffset( fld ) ; bridge.putInt( o, key, v ) ; @@ -2732,10 +2751,10 @@ } } - private static void setLongField(Object o, Class c, String fieldName, long v) + private static void setLongField(Object o, Class<?> c, String fieldName, long v) { try { - Field fld = c.getDeclaredField( fieldName ) ; + Field fld = getDeclaredField( c, fieldName ) ; if ((fld != null) && (fld.getType() == Long.TYPE)) { long key = bridge.objectFieldOffset( fld ) ; bridge.putLong( o, key, v ) ; @@ -2755,10 +2774,10 @@ } } - private static void setFloatField(Object o, Class c, String fieldName, float v) + private static void setFloatField(Object o, Class<?> c, String fieldName, float v) { try { - Field fld = c.getDeclaredField( fieldName ) ; + Field fld = getDeclaredField( c, fieldName ) ; if ((fld != null) && (fld.getType() == Float.TYPE)) { long key = bridge.objectFieldOffset( fld ) ; bridge.putFloat( o, key, v ) ; @@ -2778,10 +2797,10 @@ } } - private static void setDoubleField(Object o, Class c, String fieldName, double v) + private static void setDoubleField(Object o, Class<?> c, String fieldName, double v) { try { - Field fld = c.getDeclaredField( fieldName ) ; + Field fld = getDeclaredField(c, fieldName ) ; if ((fld != null) && (fld.getType() == Double.TYPE)) { long key = bridge.objectFieldOffset( fld ) ; bridge.putDouble( o, key, v ) ; @@ -2801,6 +2820,23 @@ } } + + private static Field getDeclaredField(final Class<?> c, + final String fieldName) + throws PrivilegedActionException, NoSuchFieldException, SecurityException { + if (System.getSecurityManager() == null) { + return c.getDeclaredField(fieldName); + } else { + return AccessController + .doPrivileged(new PrivilegedExceptionAction<Field>() { + public Field run() + throws NoSuchFieldException { + return c.getDeclaredField(fieldName); + } + }); + } + } + /** * This class maintains a map of stream position to * an Object currently being deserialized. It is used @@ -2811,12 +2847,12 @@ */ static class ActiveRecursionManager { - private Map offsetToObjectMap; + private Map<Integer, Object> offsetToObjectMap; public ActiveRecursionManager() { // A hash map is unsynchronized and allows // null values - offsetToObjectMap = new HashMap(); + offsetToObjectMap = new HashMap<>(); } // Called right after allocating a new object.