PatchSet 4407 
Date: 2004/02/09 15:56:22
Author: kaz
Branch: HEAD
Tag: (none) 
Log:
2004-02-09  Ito Kazumitsu <[EMAIL PROTECTED]>

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

Members: 
        ChangeLog:1.1991->1.1992 
        libraries/javalib/java/io/ObjectInputStream.java:1.31->1.32 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.1991 kaffe/ChangeLog:1.1992
--- kaffe/ChangeLog:1.1991      Mon Feb  9 00:44:32 2004
+++ kaffe/ChangeLog     Mon Feb  9 15:56:22 2004
@@ -1,3 +1,9 @@
+2004-02-09  Ito Kazumitsu <[EMAIL PROTECTED]>
+
+       * libraries/javalib/java/io/ObjectInputStream.java
+       (readClassDescriptor):
+       Avoid the overflow of fieldmapping.
+
 2004-02-08  Dalibor Topic <[EMAIL PROTECTED]>
 
        * Makefile.am (DIST_SUBDIRS): Removed intl.
Index: kaffe/libraries/javalib/java/io/ObjectInputStream.java
diff -u kaffe/libraries/javalib/java/io/ObjectInputStream.java:1.31 
kaffe/libraries/javalib/java/io/ObjectInputStream.java:1.32
--- kaffe/libraries/javalib/java/io/ObjectInputStream.java:1.31 Mon Feb  2 18:01:05 
2004
+++ kaffe/libraries/javalib/java/io/ObjectInputStream.java      Mon Feb  9 15:56:23 
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;
   }

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to