OSDN Git Service

2002-07-24 Mark Wielaard <mark@klomp.org>
authormark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Jul 2002 16:05:34 +0000 (16:05 +0000)
committermark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Jul 2002 16:05:34 +0000 (16:05 +0000)
* java/lang/reflect/natField.cc (setAddr): Check isAccessible().
* java/io/ObjectInputStream.java (setBooleanField): Before setting
field call setAccessible(true).
(setByteField): Likewise.
(setCharField): Likewise.
(setDoubleField): Likewise.
(setFloatField): Likewise.
(setIntField): Likewise.
(setLongField): Likewise.
(setShortField): Likewise.
(setObjectField): Likewise.

2002-07-24  Tom Tromey  <tromey@redhat.com>

* java/io/ObjectInputStream.java (readObject) [TC_ARRAY]: Don't
use toString() to format array element.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55711 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/io/ObjectInputStream.java
libjava/java/lang/reflect/natField.cc

index aeb0491..ff3c72f 100644 (file)
@@ -1,3 +1,22 @@
+2002-07-24  Mark Wielaard  <mark@klomp.org>
+
+       * java/lang/reflect/natField.cc (setAddr): Check isAccessible().
+       * java/io/ObjectInputStream.java (setBooleanField): Before setting
+       field call setAccessible(true).
+       (setByteField): Likewise.
+       (setCharField): Likewise.
+       (setDoubleField): Likewise.
+       (setFloatField): Likewise.
+       (setIntField): Likewise.
+       (setLongField): Likewise.
+       (setShortField): Likewise.
+       (setObjectField): Likewise.
+
+2002-07-24  Tom Tromey  <tromey@redhat.com>
+
+       * java/io/ObjectInputStream.java (readObject) [TC_ARRAY]: Don't
+       use toString() to format array element.
+
 2002-07-23  Mark Wielaard  <mark@klomp.org>
 
        * gnu/java/security/provider/MD5.java: Extends MessageDigest, not
index 140725a..e1e16f2 100644 (file)
@@ -244,7 +244,7 @@ public class ObjectInputStream extends InputStream
        int handle = assignNewHandle (array);
        readArrayElements (array, componentType);
        for (int i=0, len=Array.getLength(array); i < len; i++)
-         dumpElementln ("  ELEMENT[" + i + "]=" + Array.get(array, i).toString());
+         dumpElementln ("  ELEMENT[" + i + "]=" + Array.get(array, i));
        ret_val = processResolution (array, handle);
        break;
       }
@@ -1401,6 +1401,7 @@ public class ObjectInputStream extends InputStream
       {
        Class klass = obj.getClass ();
        Field f = getField (klass, field_name);
+       f.setAccessible(true);
        f.setBoolean (obj, val);
       }
     catch (Exception _)
@@ -1415,6 +1416,7 @@ public class ObjectInputStream extends InputStream
       {
        Class klass = obj.getClass ();
        Field f = getField (klass, field_name);
+       f.setAccessible(true);
        f.setByte (obj, val);
       }
     catch (Exception _)
@@ -1429,6 +1431,7 @@ public class ObjectInputStream extends InputStream
       {
        Class klass = obj.getClass ();
        Field f = getField (klass, field_name);
+       f.setAccessible(true);
        f.setChar (obj, val);
       }
     catch (Exception _)
@@ -1443,6 +1446,7 @@ public class ObjectInputStream extends InputStream
       {
        Class klass = obj.getClass ();
        Field f = getField (klass, field_name);
+       f.setAccessible(true);
        f.setDouble (obj, val);
       }
     catch (Exception _)
@@ -1457,6 +1461,7 @@ public class ObjectInputStream extends InputStream
       {
        Class klass = obj.getClass ();
        Field f = getField (klass, field_name);
+       f.setAccessible(true);
        f.setFloat (obj, val);
       }
     catch (Exception _)
@@ -1471,6 +1476,7 @@ public class ObjectInputStream extends InputStream
       {
        Class klass = obj.getClass ();
        Field f = getField (klass, field_name);
+       f.setAccessible(true);
        f.setInt (obj, val);
       }
     catch (Exception _)
@@ -1486,6 +1492,7 @@ public class ObjectInputStream extends InputStream
       {
        Class klass = obj.getClass ();
        Field f = getField (klass, field_name);
+       f.setAccessible(true);
        f.setLong (obj, val);
       }
     catch (Exception _)
@@ -1501,6 +1508,7 @@ public class ObjectInputStream extends InputStream
       {
        Class klass = obj.getClass ();
        Field f = getField (klass, field_name);
+       f.setAccessible(true);
        f.setShort (obj, val);
       }
     catch (Exception _)
@@ -1516,6 +1524,7 @@ public class ObjectInputStream extends InputStream
       {
        Class klass = obj.getClass ();
        Field f = getField (klass, field_name);
+       f.setAccessible(true);
        // FIXME: We should check the type_code here
        f.set (obj, val);
       }
index b0ae48d..b10b5f5 100644 (file)
@@ -257,7 +257,8 @@ static void*
 setAddr (java::lang::reflect::Field* field, jclass caller, jobject obj)
 {
   void *addr = getAddr(field, caller, obj);
-  if  (field->getModifiers() & java::lang::reflect::Modifier::FINAL)
+  if  (!field->isAccessible()
+       && field->getModifiers() & java::lang::reflect::Modifier::FINAL)
     throw new java::lang::IllegalAccessException();
   return addr;
 }