aboutsummaryrefslogtreecommitdiff
path: root/libjava/jni.cc
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2003-01-31 22:50:48 +0000
committerTom Tromey <tromey@gcc.gnu.org>2003-01-31 22:50:48 +0000
commit9bc825c4bac44e0c7eabb39727c4741b6b1a9255 (patch)
treec6168c23fa33ae236c5ed8d24550103a0ed28dcf /libjava/jni.cc
parent0120f3d478fb1aa57fda945471357e5c5006f58d (diff)
downloadgcc-9bc825c4bac44e0c7eabb39727c4741b6b1a9255.zip
gcc-9bc825c4bac44e0c7eabb39727c4741b6b1a9255.tar.gz
gcc-9bc825c4bac44e0c7eabb39727c4741b6b1a9255.tar.bz2
jni.cc (_Jv_JNI_NewObjectArray): Check that initializer can be cast to element type.
* jni.cc (_Jv_JNI_NewObjectArray): Check that initializer can be cast to element type. (_Jv_JNI_SetObjectArrayElement): Check array bounds. (_Jv_JNI_GetObjectArrayElement): Likewise. From-SVN: r62210
Diffstat (limited to 'libjava/jni.cc')
-rw-r--r--libjava/jni.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/libjava/jni.cc b/libjava/jni.cc
index b841b4f..c1a2880 100644
--- a/libjava/jni.cc
+++ b/libjava/jni.cc
@@ -1,6 +1,6 @@
// jni.cc - JNI implementation, including the jump table.
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation
This file is part of libgcj.
@@ -1388,6 +1388,7 @@ static jarray
elementClass = unwrap (elementClass);
init = unwrap (init);
+ _Jv_CheckCast (elementClass, init);
jarray result = JvNewObjectArray (length, elementClass, init);
return (jarray) wrap_value (env, result);
}
@@ -1402,6 +1403,8 @@ static jobject
(JNICALL _Jv_JNI_GetObjectArrayElement) (JNIEnv *env, jobjectArray array,
jsize index)
{
+ if ((unsigned) index >= (unsigned) array->length)
+ _Jv_ThrowBadArrayIndex (index);
jobject *elts = elements (unwrap (array));
return wrap_value (env, elts[index]);
}
@@ -1416,6 +1419,8 @@ static void
value = unwrap (value);
_Jv_CheckArrayStore (array, value);
+ if ((unsigned) index >= (unsigned) array->length)
+ _Jv_ThrowBadArrayIndex (index);
jobject *elts = elements (array);
elts[index] = value;
}