OSDN Git Service

* java/lang/natSystem.cc (arraycopy): Check for overflow.
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Jul 2003 15:31:43 +0000 (15:31 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Jul 2003 15:31:43 +0000 (15:31 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69706 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/lang/natSystem.cc

index 4f6ad80..0364546 100644 (file)
@@ -1,5 +1,7 @@
 2003-07-23  Tom Tromey  <tromey@redhat.com>
 
+       * java/lang/natSystem.cc (arraycopy): Check for overflow.
+
        * boehm.cc (_Jv_BuildGCDescr): Use `1ULL'.
 
 2003-07-22  Tom Tromey  <tromey@redhat.com>
index e2d4232..4a08bb1 100644 (file)
@@ -66,8 +66,10 @@ java::lang::System::arraycopy (jobject src, jint src_offset,
   __JArray *src_a = (__JArray *) src;
   __JArray *dst_a = (__JArray *) dst;
   if (src_offset < 0 || dst_offset < 0 || count < 0
-      || src_offset + count > src_a->length
-      || dst_offset + count > dst_a->length)
+      || (unsigned jint) src_offset > (unsigned jint) src_a->length
+      || (unsigned jint) (src_offset + count) > (unsigned jint) src_a->length
+      || (unsigned jint) dst_offset > (unsigned jint) dst_a->length
+      || (unsigned jint) (dst_offset + count) > (unsigned jint) dst_a->length)
     throw new ArrayIndexOutOfBoundsException;
 
   // Do-nothing cases.