jni.cc (_Jv_JNI_GetPrimitiveArrayRegion): Fixed bounds checking.
authorTom Tromey <tromey@gcc.gnu.org>
Fri, 27 Apr 2001 16:09:54 +0000 (16:09 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 27 Apr 2001 16:09:54 +0000 (16:09 +0000)
* jni.cc (_Jv_JNI_GetPrimitiveArrayRegion): Fixed bounds
checking.
(_Jv_JNI_SetPrimitiveArrayRegion): Likewise.

From-SVN: r41634

libjava/ChangeLog
libjava/jni.cc

index 3321bcb2cc39e341d7103b91fb9af41356993f35..74523a6722c6293c31f0076928e7045a04653080 100644 (file)
@@ -1,10 +1,16 @@
+2001-04-27  Tom Tromey  <tromey@redhat.com>
+
+       * jni.cc (_Jv_JNI_GetPrimitiveArrayRegion): Fixed bounds
+       checking.
+       (_Jv_JNI_SetPrimitiveArrayRegion): Likewise.
+
 2001-04-27  Martin Kahlert  <martin.kahlert@infineon.com>
 
        * include/jni.h (struct JNINativeInterface): Fixed types in
        Get/Set*ArrayRegion declarations.
        (class _Jv_JNIEnv): Likewise.
 
-2001-04-25  Bryce McKinlay  <bryce@albatross.co.nz>
+2001-04-26  Alexandre Oliva  <aoliva@redhat.com>
 
        * configure.in: Obtain THREADS with `gcc -v'.
        * configure: Rebuilt.
index 6190f4f8d740287e3c104e5910147a7e94c1f772..34f2995a408736019c99fbcd97e647af87d591f7 100644 (file)
@@ -1364,7 +1364,9 @@ _Jv_JNI_GetPrimitiveArrayRegion (JNIEnv *env, JArray<T> *array,
                                 jsize start, jsize len,
                                 T *buf)
 {
-  if (start < 0 || len >= array->length || start + len >= array->length)
+  // The cast to unsigned lets us save a comparison.
+  if (start < 0 || len < 0
+      || (unsigned long) (start + len) >= (unsigned long) array->length)
     {
       try
        {
@@ -1389,7 +1391,9 @@ static void
 _Jv_JNI_SetPrimitiveArrayRegion (JNIEnv *env, JArray<T> *array, 
                                 jsize start, jsize len, T *buf)
 {
-  if (start < 0 || len >= array->length || start + len >= array->length)
+  // The cast to unsigned lets us save a comparison.
+  if (start < 0 || len < 0
+      || (unsigned long) (start + len) >= (unsigned long) array->length)
     {
       try
        {
@@ -1432,7 +1436,8 @@ _Jv_JNI_MonitorEnter (JNIEnv *env, jobject obj)
 {
   try
     {
-      return _Jv_MonitorEnter (obj);
+      _Jv_MonitorEnter (obj);
+      return 0;
     }
   catch (jthrowable t)
     {
@@ -1446,7 +1451,8 @@ _Jv_JNI_MonitorExit (JNIEnv *env, jobject obj)
 {
   try
     {
-      return _Jv_MonitorExit (obj);
+      _Jv_MonitorExit (obj);
+      return 0;
     }
   catch (jthrowable t)
     {