Mon, 08 Aug 2016 13:36:31 -0700
Merge
.hgtags | file | annotate | diff | comparison | revisions |
1.1 --- a/.hgtags Tue Jul 12 14:50:05 2016 -0700 1.2 +++ b/.hgtags Mon Aug 08 13:36:31 2016 -0700 1.3 @@ -670,4 +670,16 @@ 1.4 981c4d9dab16b3fa7333e5baa5497c299acd5172 jdk8u111-b02 1.5 893adc105044c14abfb54de32a79f2f21981cafa jdk8u111-b03 1.6 ec7b9aafd7e1e9763925e8b794834612bbe0e19b jdk8u111-b04 1.7 +3a25f8a752524bad7e78800158c485b890be3982 jdk8u111-b05 1.8 +d5dabec41733e59f00dd456f88fb00b3803bed8b jdk8u111-b06 1.9 +d8a1e50ce110d18b3ad01ee5c997425bfe90b2a1 jdk8u111-b07 1.10 +560812b6d1948df7794f22840e4e3976258b034e jdk8u111-b08 1.11 +b87d82f5c33dfb55bfc81254044f28eea5d7424a jdk8u112-b00 1.12 +1f2394102288d9073652064784e31a3f52fc5d4b jdk8u112-b01 1.13 +40c934289deefd68915f6519d71a4e315c69117a jdk8u112-b02 1.14 +ddb3a8afe0ad50e04d360efa96aee78cb599ea72 jdk8u112-b03 1.15 +1d0047d03f04c0c15c7856e0f177b9e15e94a692 jdk8u112-b04 1.16 +b6cdfd0b4a9cff1ed1bb43ef7fb21dc4d2dfe7d8 jdk8u112-b06 1.17 +9d09ca09ea33e6af774914606f94960e5af4fc9b jdk8u112-b07 1.18 +0ac6b67980512ce025a280d42c05156293613dbb jdk8u112-b08 1.19 3a25f8a752524bad7e78800158c485b890be3982 jdk8u121-b00
2.1 --- a/LICENSE Tue Jul 12 14:50:05 2016 -0700 2.2 +++ b/LICENSE Mon Aug 08 13:36:31 2016 -0700 2.3 @@ -3,7 +3,7 @@ 2.4 Version 2, June 1991 2.5 2.6 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 2.7 -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 2.8 +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 2.9 2.10 Everyone is permitted to copy and distribute verbatim copies of this license 2.11 document, but changing it is not allowed. 2.12 @@ -287,8 +287,8 @@ 2.13 more details. 2.14 2.15 You should have received a copy of the GNU General Public License along 2.16 - with this program; if not, write to the Free Software Foundation, Inc., 59 2.17 - Temple Place, Suite 330, Boston, MA 02111-1307 USA 2.18 + with this program; if not, write to the Free Software Foundation, Inc., 2.19 + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 2.20 2.21 Also add information on how to contact you by electronic and paper mail. 2.22
3.1 --- a/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Tue Jul 12 14:50:05 2016 -0700 3.2 +++ b/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Mon Aug 08 13:36:31 2016 -0700 3.3 @@ -2230,7 +2230,7 @@ 3.4 * REVISIT -- This code doesn't do what the comment says to when 3.5 * getField() is null! 3.6 */ 3.7 - private void inputClassFields(Object o, Class cl, 3.8 + private void inputClassFields(Object o, final Class<?> cl, 3.9 ObjectStreamField[] fields, 3.10 com.sun.org.omg.SendingContext.CodeBase sender) 3.11 throws InvalidClassException, StreamCorruptedException, 3.12 @@ -2264,21 +2264,31 @@ 3.13 } 3.14 3.15 try { 3.16 - Class fieldCl = fields[i].getClazz(); 3.17 + Class<?> fieldCl = fields[i].getClazz(); 3.18 if ((objectValue != null) 3.19 && (!fieldCl.isAssignableFrom( 3.20 objectValue.getClass()))) { 3.21 throw new IllegalArgumentException("Field mismatch"); 3.22 } 3.23 - Field classField = null; 3.24 + Field declaredClassField = null; 3.25 + final String inputStreamFieldName = fields[i].getName(); 3.26 try { 3.27 - classField = cl.getDeclaredField(fields[i].getName()); 3.28 - } catch (NoSuchFieldException nsfEx) { 3.29 - throw new IllegalArgumentException(nsfEx); 3.30 + declaredClassField = getDeclaredField( cl, inputStreamFieldName); 3.31 + } catch (PrivilegedActionException paEx) { 3.32 + throw new IllegalArgumentException( 3.33 + (NoSuchFieldException) paEx.getException()); 3.34 } catch (SecurityException secEx) { 3.35 - throw new IllegalArgumentException(secEx.getCause()); 3.36 + throw new IllegalArgumentException(secEx); 3.37 + } catch (NullPointerException npEx) { 3.38 + continue; 3.39 + } catch (NoSuchFieldException e) { 3.40 + continue; 3.41 } 3.42 - Class<?> declaredFieldClass = classField.getType(); 3.43 + 3.44 + if (declaredClassField == null) { 3.45 + continue; 3.46 + } 3.47 + Class<?> declaredFieldClass = declaredClassField.getType(); 3.48 3.49 // check input field type is a declared field type 3.50 // input field is a subclass of the declared field 3.51 @@ -2291,15 +2301,24 @@ 3.52 } 3.53 bridge.putObject( o, fields[i].getFieldID(), objectValue ) ; 3.54 // reflective code: fields[i].getField().set( o, objectValue ) ; 3.55 - } catch (IllegalArgumentException e) { 3.56 - ClassCastException exc = new ClassCastException("Assigning instance of class " + 3.57 - objectValue.getClass().getName() + 3.58 - " to field " + 3.59 - currentClassDesc.getName() + 3.60 - '#' + 3.61 - fields[i].getField().getName()); 3.62 - exc.initCause( e ) ; 3.63 - throw exc ; 3.64 + } catch (IllegalArgumentException iaEx) { 3.65 + String objectValueClassName = "null"; 3.66 + String currentClassDescClassName = "null"; 3.67 + String fieldName = "null"; 3.68 + if (objectValue != null) { 3.69 + objectValueClassName = objectValue.getClass().getName(); 3.70 + } 3.71 + if (currentClassDesc != null) { 3.72 + currentClassDescClassName = currentClassDesc.getName(); 3.73 + } 3.74 + if (fields[i] != null && fields[i].getField() != null) { 3.75 + fieldName = fields[i].getField().getName(); 3.76 + } 3.77 + ClassCastException ccEx = new ClassCastException( 3.78 + "Assigning instance of class " + objectValueClassName 3.79 + + " to field " + currentClassDescClassName + '#' + fieldName); 3.80 + ccEx.initCause( iaEx ) ; 3.81 + throw ccEx ; 3.82 } 3.83 } // end : for loop 3.84 } 3.85 @@ -2595,9 +2614,9 @@ 3.86 3.87 } 3.88 3.89 - private static void setObjectField(Object o, Class c, String fieldName, Object v) { 3.90 + private static void setObjectField(Object o, Class<?> c, String fieldName, Object v) { 3.91 try { 3.92 - Field fld = c.getDeclaredField( fieldName ) ; 3.93 + Field fld = getDeclaredField( c, fieldName ) ; 3.94 Class fieldCl = fld.getType(); 3.95 if(v != null && !fieldCl.isInstance(v)) { 3.96 throw new Exception(); 3.97 @@ -2617,10 +2636,10 @@ 3.98 } 3.99 } 3.100 3.101 - private static void setBooleanField(Object o, Class c, String fieldName, boolean v) 3.102 + private static void setBooleanField(Object o, Class<?> c, String fieldName, boolean v) 3.103 { 3.104 try { 3.105 - Field fld = c.getDeclaredField( fieldName ) ; 3.106 + Field fld = getDeclaredField( c, fieldName ) ; 3.107 if ((fld != null) && (fld.getType() == Boolean.TYPE)) { 3.108 long key = bridge.objectFieldOffset( fld ) ; 3.109 bridge.putBoolean( o, key, v ) ; 3.110 @@ -2640,10 +2659,10 @@ 3.111 } 3.112 } 3.113 3.114 - private static void setByteField(Object o, Class c, String fieldName, byte v) 3.115 + private static void setByteField(Object o, Class<?> c, String fieldName, byte v) 3.116 { 3.117 try { 3.118 - Field fld = c.getDeclaredField( fieldName ) ; 3.119 + Field fld = getDeclaredField( c, fieldName ) ; 3.120 if ((fld != null) && (fld.getType() == Byte.TYPE)) { 3.121 long key = bridge.objectFieldOffset( fld ) ; 3.122 bridge.putByte( o, key, v ) ; 3.123 @@ -2663,10 +2682,10 @@ 3.124 } 3.125 } 3.126 3.127 - private static void setCharField(Object o, Class c, String fieldName, char v) 3.128 + private static void setCharField(Object o, Class<?> c, String fieldName, char v) 3.129 { 3.130 try { 3.131 - Field fld = c.getDeclaredField( fieldName ) ; 3.132 + Field fld = getDeclaredField( c, fieldName ) ; 3.133 if ((fld != null) && (fld.getType() == Character.TYPE)) { 3.134 long key = bridge.objectFieldOffset( fld ) ; 3.135 bridge.putChar( o, key, v ) ; 3.136 @@ -2686,10 +2705,10 @@ 3.137 } 3.138 } 3.139 3.140 - private static void setShortField(Object o, Class c, String fieldName, short v) 3.141 + private static void setShortField(Object o, Class<?> c, String fieldName, short v) 3.142 { 3.143 try { 3.144 - Field fld = c.getDeclaredField( fieldName ) ; 3.145 + Field fld = getDeclaredField( c, fieldName ) ; 3.146 if ((fld != null) && (fld.getType() == Short.TYPE)) { 3.147 long key = bridge.objectFieldOffset( fld ) ; 3.148 bridge.putShort( o, key, v ) ; 3.149 @@ -2709,10 +2728,10 @@ 3.150 } 3.151 } 3.152 3.153 - private static void setIntField(Object o, Class c, String fieldName, int v) 3.154 + private static void setIntField(Object o, final Class<?> c, final String fieldName, int v) 3.155 { 3.156 try { 3.157 - Field fld = c.getDeclaredField( fieldName ) ; 3.158 + Field fld = getDeclaredField( c, fieldName ) ; 3.159 if ((fld != null) && (fld.getType() == Integer.TYPE)) { 3.160 long key = bridge.objectFieldOffset( fld ) ; 3.161 bridge.putInt( o, key, v ) ; 3.162 @@ -2732,10 +2751,10 @@ 3.163 } 3.164 } 3.165 3.166 - private static void setLongField(Object o, Class c, String fieldName, long v) 3.167 + private static void setLongField(Object o, Class<?> c, String fieldName, long v) 3.168 { 3.169 try { 3.170 - Field fld = c.getDeclaredField( fieldName ) ; 3.171 + Field fld = getDeclaredField( c, fieldName ) ; 3.172 if ((fld != null) && (fld.getType() == Long.TYPE)) { 3.173 long key = bridge.objectFieldOffset( fld ) ; 3.174 bridge.putLong( o, key, v ) ; 3.175 @@ -2755,10 +2774,10 @@ 3.176 } 3.177 } 3.178 3.179 - private static void setFloatField(Object o, Class c, String fieldName, float v) 3.180 + private static void setFloatField(Object o, Class<?> c, String fieldName, float v) 3.181 { 3.182 try { 3.183 - Field fld = c.getDeclaredField( fieldName ) ; 3.184 + Field fld = getDeclaredField( c, fieldName ) ; 3.185 if ((fld != null) && (fld.getType() == Float.TYPE)) { 3.186 long key = bridge.objectFieldOffset( fld ) ; 3.187 bridge.putFloat( o, key, v ) ; 3.188 @@ -2778,10 +2797,10 @@ 3.189 } 3.190 } 3.191 3.192 - private static void setDoubleField(Object o, Class c, String fieldName, double v) 3.193 + private static void setDoubleField(Object o, Class<?> c, String fieldName, double v) 3.194 { 3.195 try { 3.196 - Field fld = c.getDeclaredField( fieldName ) ; 3.197 + Field fld = getDeclaredField(c, fieldName ) ; 3.198 if ((fld != null) && (fld.getType() == Double.TYPE)) { 3.199 long key = bridge.objectFieldOffset( fld ) ; 3.200 bridge.putDouble( o, key, v ) ; 3.201 @@ -2801,6 +2820,23 @@ 3.202 } 3.203 } 3.204 3.205 + 3.206 + private static Field getDeclaredField(final Class<?> c, 3.207 + final String fieldName) 3.208 + throws PrivilegedActionException, NoSuchFieldException, SecurityException { 3.209 + if (System.getSecurityManager() == null) { 3.210 + return c.getDeclaredField(fieldName); 3.211 + } else { 3.212 + return AccessController 3.213 + .doPrivileged(new PrivilegedExceptionAction<Field>() { 3.214 + public Field run() 3.215 + throws NoSuchFieldException { 3.216 + return c.getDeclaredField(fieldName); 3.217 + } 3.218 + }); 3.219 + } 3.220 + } 3.221 + 3.222 /** 3.223 * This class maintains a map of stream position to 3.224 * an Object currently being deserialized. It is used 3.225 @@ -2811,12 +2847,12 @@ 3.226 */ 3.227 static class ActiveRecursionManager 3.228 { 3.229 - private Map offsetToObjectMap; 3.230 + private Map<Integer, Object> offsetToObjectMap; 3.231 3.232 public ActiveRecursionManager() { 3.233 // A hash map is unsynchronized and allows 3.234 // null values 3.235 - offsetToObjectMap = new HashMap(); 3.236 + offsetToObjectMap = new HashMap<>(); 3.237 } 3.238 3.239 // Called right after allocating a new object.