aboutsummaryrefslogtreecommitdiff
path: root/libjava/jni.cc
diff options
context:
space:
mode:
authorTom Tromey <tromey@gcc.gnu.org>2001-04-27 16:09:54 +0000
committerTom Tromey <tromey@gcc.gnu.org>2001-04-27 16:09:54 +0000
commit55cc31c086c098bf18b7ae7417ba38dea171714c (patch)
tree67f51902ca9c330d6225fe727d38067e11c0d926 /libjava/jni.cc
parent09efa46f6a9c3c515b38da1c77aa5a413963c1d9 (diff)
downloadgcc-55cc31c086c098bf18b7ae7417ba38dea171714c.zip
gcc-55cc31c086c098bf18b7ae7417ba38dea171714c.tar.gz
gcc-55cc31c086c098bf18b7ae7417ba38dea171714c.tar.bz2
jni.cc (_Jv_JNI_GetPrimitiveArrayRegion): Fixed bounds checking.
* jni.cc (_Jv_JNI_GetPrimitiveArrayRegion): Fixed bounds checking. (_Jv_JNI_SetPrimitiveArrayRegion): Likewise. From-SVN: r41634
Diffstat (limited to 'libjava/jni.cc')
-rw-r--r--libjava/jni.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/libjava/jni.cc b/libjava/jni.cc
index 6190f4f..34f2995 100644
--- a/libjava/jni.cc
+++ b/libjava/jni.cc
@@ -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)
{