aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authormark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>2002-07-24 16:05:34 +0000
committermark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>2002-07-24 16:05:34 +0000
commitc101338ff5a88336cb086ecdbf2e42bf0e841a02 (patch)
treeb686e1771a3e2f1e0f071f8cae330a21d68da4e5 /libjava
parent0c08cb26e6b5b34d001d80bb926051805c590d77 (diff)
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55711 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog19
-rw-r--r--libjava/java/io/ObjectInputStream.java11
-rw-r--r--libjava/java/lang/reflect/natField.cc3
3 files changed, 31 insertions, 2 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index aeb049138ae..ff3c72fa08c 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 140725a8fb6..e1e16f28498 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 b0ae48d3383..b10b5f5a65a 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;
}