From 5526ddf6fd215e80083eea611180c6073f006da6 Mon Sep 17 00:00:00 2001 From: Mark Wielaard <mark@gcc.gnu.org> Date: Wed, 24 Jul 2002 16:05:34 +0000 Subject: [PATCH] [multiple changes] 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. From-SVN: r55711 --- libjava/ChangeLog | 19 +++++++++++++++++++ libjava/java/io/ObjectInputStream.java | 11 ++++++++++- libjava/java/lang/reflect/natField.cc | 3 ++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index aeb049138ae6..ff3c72fa08c5 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -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 diff --git a/libjava/java/io/ObjectInputStream.java b/libjava/java/io/ObjectInputStream.java index 140725a8fb67..e1e16f28498d 100644 --- a/libjava/java/io/ObjectInputStream.java +++ b/libjava/java/io/ObjectInputStream.java @@ -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); } diff --git a/libjava/java/lang/reflect/natField.cc b/libjava/java/lang/reflect/natField.cc index b0ae48d3383c..b10b5f5a65ac 100644 --- a/libjava/java/lang/reflect/natField.cc +++ b/libjava/java/lang/reflect/natField.cc @@ -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; } -- GitLab