Hi,

As reported in the Kaffe mailing list[1], java.io.ObjectInputStream
throws ArrayIndexOutOfBoundsException in some unusual case.

[1] http://www.kaffe.org/pipermail/kaffe/2004-February/045180.html

And here is my proposed patch.

ChangeLog entry:

2004-02-09  Ito Kazumitsu  <[EMAIL PROTECTED]>

            * java/io/ObjectInputStream.java
            (readClassDescriptor):
            Avoid the overflow of fieldmapping.

--- java/io/ObjectInputStream.java.orig Tue Feb  3 07:28:42 2004
+++ java/io/ObjectInputStream.java      Tue Feb 10 00:51:45 2004
@@ -491,7 +491,6 @@
     ObjectStreamField[] stream_fields = osc.fields;
     ObjectStreamField[] real_fields = ObjectStreamClass.lookup(clazz).fields;
     ObjectStreamField[] fieldmapping = new ObjectStreamField[2 * 
Math.max(stream_fields.length, real_fields.length)];
-    osc.fieldMapping = fieldmapping;
 
     int stream_idx = 0;
     int real_idx = 0;
@@ -543,9 +542,21 @@
          }
        if (real_field != null && !real_field.isToSet())
            real_field = null;
+       /* If some of stream_fields does not correspond to any of real_fields,
+        * or the opposite, then fieldmapping will go short.
+        */
+       if (map_idx == fieldmapping.length)
+         {
+           ObjectStreamField[] newfieldmapping =
+             new ObjectStreamField[fieldmapping.length + 2];
+           System.arraycopy(fieldmapping, 0,
+             newfieldmapping, 0, fieldmapping.length);
+           fieldmapping = newfieldmapping;
+         }
        fieldmapping[map_idx++] = stream_field;
        fieldmapping[map_idx++] = real_field;
       }
+    osc.fieldMapping = fieldmapping;
 
     return osc;
   }


_______________________________________________
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath

Reply via email to