summaryrefslogtreecommitdiffstats
path: root/libjava
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2003-07-23 15:31:43 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2003-07-23 15:31:43 +0000
commitd0485b1bee43a76ce2f64230b66587643e833569 (patch)
treeac9c360eed606d25345eb4a9fc96885609a7fa95 /libjava
parenta438d9ac3cf69bf376218f82a974762834b7a61e (diff)
downloadppe42-gcc-d0485b1bee43a76ce2f64230b66587643e833569.tar.gz
ppe42-gcc-d0485b1bee43a76ce2f64230b66587643e833569.zip
* java/lang/natSystem.cc (arraycopy): Check for overflow.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69706 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog2
-rw-r--r--libjava/java/lang/natSystem.cc6
2 files changed, 6 insertions, 2 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 4f6ad8055f7..03645462408 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -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>
diff --git a/libjava/java/lang/natSystem.cc b/libjava/java/lang/natSystem.cc
index e2d42324386..4a08bb138bf 100644
--- a/libjava/java/lang/natSystem.cc
+++ b/libjava/java/lang/natSystem.cc
@@ -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.
OpenPOWER on IntegriCloud