Merge

Thu, 16 Jul 2015 16:46:48 -0700

author
asaha
date
Thu, 16 Jul 2015 16:46:48 -0700
changeset 1067
fd1b5a75214c
parent 1028
15851994f9f8
parent 1066
05084f644c07
child 1071
b5d0e98f56b8
child 1132
043bcbf31c34

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);

mercurial