Thu, 16 Jul 2015 16:46:48 -0700
Merge
.hgtags | file | annotate | diff | comparison | revisions |
1.1 --- a/.hgtags Thu Jul 16 14:23:10 2015 -0700 1.2 +++ b/.hgtags Thu Jul 16 16:46:48 2015 -0700 1.3 @@ -401,6 +401,11 @@ 1.4 4afc048fe6ff7fc3fdbdadd8027549805c426d0d jdk8u45-b15 1.5 e67045c893eaf5e3336c4fd849786fa15b81b601 jdk8u45-b31 1.6 f2aeb52cb7cef1f984661a583baac67402f633a5 jdk8u45-b32 1.7 +e26a2620b5d206837fedab74fc84f068c7f47fa2 jdk8u45-b33 1.8 +c1399b5a4592414a8b8e6f64be019e8cf1f46074 jdk8u45-b34 1.9 +2f010018174e90b8673e5c4a3cdfed0a3c4c2fe2 jdk8u45-b35 1.10 +e953ae033f0c530f3588df430589582b6b7108d7 jdk8u45-b36 1.11 +883940e19107877d2b8c486b003253d2433fd59d jdk8u45-b37 1.12 72d116eea419824044f8dd4ae9d3a012946f72a4 jdk8u51-b00 1.13 b9638b9fe23876fd2413f336ee1d4e05d409e6a9 jdk8u51-b01 1.14 bc5562ed3c2d69ffbff357e96d9e383479042000 jdk8u51-b02 1.15 @@ -418,6 +423,7 @@ 1.16 1fbfa02e524872a75e98ee3a80e2472fa7012fde jdk8u51-b14 1.17 d6e1f914c954f98caa31edd0037837830774dfb6 jdk8u51-b15 1.18 3b9b39af6c36216418b78c449dd3af17b865a952 jdk8u51-b16 1.19 +5980dad8f264bb5ec3982d64a7c0af86fc5b3d16 jdk8u51-b31 1.20 8bbc2bb414b7e9331c2014c230553d72c9d161c5 jdk8u60-b00 1.21 15ae8298b34beb30f2bd7baa7ff895af2bec13f6 jdk8u60-b01 1.22 a98524c04cbd24bbc3029b21c033abf9108e92b4 jdk8u60-b02 1.23 @@ -443,5 +449,13 @@ 1.24 3a04901d83880634ecd70c8be992189228ccd746 jdk8u60-b22 1.25 0828bb6521738ad5a7fe11f0aa3495465f002848 jdk8u60-b23 1.26 b0779099d006fcb2a0af493e2a2f828411bfad33 jdk8u60-b24 1.27 +8e247b5216a5a4623c1bef7331585d78e7c0fb15 jdk8u52-b06 1.28 +974e2fd9b5b3cec38cceb35c93bcc3b5bedbe91c jdk8u52-b07 1.29 +8e247b5216a5a4623c1bef7331585d78e7c0fb15 jdk8u65-b00 1.30 +31ceb15b19bee8e02aa2cf4be5c3f147ad6afb22 jdk8u65-b01 1.31 +4c8bc7757f825f9fe0806fa13f0fe85b1a20982a jdk8u65-b02 1.32 +7a98523691a9657d4f5ecf8fb71476cecc6d5c4d jdk8u65-b03 1.33 +771cf2ce97e332e1ecffe4818d0fbe77f11e28a2 jdk8u65-b04 1.34 +5b6ff67eed5f25cc710a53026e706597c9193f56 jdk8u65-b05 1.35 3a04901d83880634ecd70c8be992189228ccd746 jdk8u66-b00 1.36 3717d70ac87f5e5579e540cd990b4e958c5990a4 jdk8u66-b01
2.1 --- a/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Thu Jul 16 14:23:10 2015 -0700 2.2 +++ b/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Thu Jul 16 16:46:48 2015 -0700 2.3 @@ -567,6 +567,11 @@ 2.4 // XXX I18N, logging needed. 2.5 throw new NotActiveException("defaultReadObjectDelegate"); 2.6 2.7 + if (!currentClassDesc.forClass().isAssignableFrom( 2.8 + currentObject.getClass())) { 2.9 + throw new IOException("Object Type mismatch"); 2.10 + } 2.11 + 2.12 // The array will be null unless fields were retrieved 2.13 // remotely because of a serializable version difference. 2.14 // Bug fix for 4365188. See the definition of 2.15 @@ -1063,6 +1068,9 @@ 2.16 2.17 int spBase = spClass; // current top of stack 2.18 2.19 + if (currentClass.getName().equals("java.lang.String")) { 2.20 + return this.readUTF(); 2.21 + } 2.22 /* The object's classes should be processed from supertype to subtype 2.23 * Push all the clases of the current object onto a stack. 2.24 * Note that only the serializable classes are represented 2.25 @@ -2257,6 +2265,27 @@ 2.26 2.27 try { 2.28 Class fieldCl = fields[i].getClazz(); 2.29 + if ((objectValue != null) 2.30 + && (!fieldCl.isAssignableFrom( 2.31 + objectValue.getClass()))) { 2.32 + throw new IllegalArgumentException("Field mismatch"); 2.33 + } 2.34 + Field classField = null; 2.35 + try { 2.36 + classField = cl.getDeclaredField(fields[i].getName()); 2.37 + } catch (NoSuchFieldException nsfEx) { 2.38 + throw new IllegalArgumentException(nsfEx); 2.39 + } catch (SecurityException secEx) { 2.40 + throw new IllegalArgumentException(secEx.getCause()); 2.41 + } 2.42 + Class<?> declaredFieldClass = classField.getType(); 2.43 + 2.44 + // check input field type is a declared field type 2.45 + // input field is a subclass of the declared field 2.46 + if (!declaredFieldClass.isAssignableFrom(fieldCl)) { 2.47 + throw new IllegalArgumentException( 2.48 + "Field Type mismatch"); 2.49 + } 2.50 if (objectValue != null && !fieldCl.isInstance(objectValue)) { 2.51 throw new IllegalArgumentException(); 2.52 }
3.1 --- a/src/share/classes/com/sun/corba/se/impl/io/IIOPOutputStream.java Thu Jul 16 14:23:10 2015 -0700 3.2 +++ b/src/share/classes/com/sun/corba/se/impl/io/IIOPOutputStream.java Thu Jul 16 16:46:48 2015 -0700 3.3 @@ -559,6 +559,10 @@ 3.4 * Push all the clases of the current object onto a stack. 3.5 * Remember the stack pointer where this set of classes is being pushed. 3.6 */ 3.7 + if (currentClassDesc.forClass().getName().equals("java.lang.String")) { 3.8 + this.writeUTF((String)obj); 3.9 + return; 3.10 + } 3.11 int stackMark = classDescStack.size(); 3.12 try { 3.13 ObjectStreamClass next;
4.1 --- a/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java Thu Jul 16 14:23:10 2015 -0700 4.2 +++ b/src/share/classes/sun/rmi/rmic/iiop/StubGenerator.java Thu Jul 16 16:46:48 2015 -0700 4.3 @@ -446,6 +446,9 @@ 4.4 if (emitPermissionCheck) { 4.5 4.6 // produce the following generated code for example 4.7 + // 4.8 + // private transient boolean _instantiated = false; 4.9 + // 4.10 // private static Void checkPermission() { 4.11 // SecurityManager sm = System.getSecurityManager(); 4.12 // if (sm != null) { 4.13 @@ -460,11 +463,21 @@ 4.14 // 4.15 // public _XXXXX_Stub() { 4.16 // this(checkPermission()); 4.17 + // _instantiated = true; 4.18 + // } 4.19 + // 4.20 + // private void readObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException { 4.21 + // checkPermission(); 4.22 + // s.defaultReadObject(); 4.23 + // _instantiated = true; 4.24 // } 4.25 // 4.26 // where XXXXX is the name of the remote interface 4.27 4.28 p.pln(); 4.29 + p.plnI("private transient boolean _instantiated = false;"); 4.30 + p.pln(); 4.31 + p.pO(); 4.32 p.plnI("private static Void checkPermission() {"); 4.33 p.plnI("SecurityManager sm = System.getSecurityManager();"); 4.34 p.pln("if (sm != null) {"); 4.35 @@ -481,13 +494,23 @@ 4.36 p.pO(); 4.37 4.38 p.pI(); 4.39 - p.pln("private " + currentClass + "(Void ignore) { }"); 4.40 + p.plnI("private " + currentClass + "(Void ignore) { }"); 4.41 p.pln(); 4.42 - 4.43 - p.plnI("public " + currentClass + "() { "); 4.44 + p.pO(); 4.45 + 4.46 + p.plnI("public " + currentClass + "() {"); 4.47 p.pln("this(checkPermission());"); 4.48 + p.pln("_instantiated = true;"); 4.49 p.pOln("}"); 4.50 p.pln(); 4.51 + p.plnI("private void readObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException {"); 4.52 + p.plnI("checkPermission();"); 4.53 + p.pO(); 4.54 + p.pln("s.defaultReadObject();"); 4.55 + p.pln("_instantiated = true;"); 4.56 + p.pOln("}"); 4.57 + p.pln(); 4.58 + //p.pO(); 4.59 } 4.60 4.61 if (!emitPermissionCheck) { 4.62 @@ -894,6 +917,7 @@ 4.63 String paramNames[] = method.getArgumentNames(); 4.64 Type returnType = method.getReturnType(); 4.65 ValueType[] exceptions = getStubExceptions(method,false); 4.66 + boolean hasIOException = false; 4.67 4.68 addNamesInUse(method); 4.69 addNameInUse("_type_ids"); 4.70 @@ -921,6 +945,13 @@ 4.71 p.plnI(" {"); 4.72 4.73 // Now create the method body... 4.74 + if (emitPermissionCheck) { 4.75 + p.pln("if ((System.getSecurityManager() != null) && (!_instantiated)) {"); 4.76 + p.plnI(" throw new java.io.IOError(new java.io.IOException(\"InvalidObject \"));"); 4.77 + p.pOln("}"); 4.78 + p.pln(); 4.79 + } 4.80 + 4.81 4.82 if (localStubs) { 4.83 writeLocalStubMethodBody(p,method,theType);