aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/natSystem.cc
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2003-07-23 15:31:43 +0000
committerTom Tromey <tromey@gcc.gnu.org>2003-07-23 15:31:43 +0000
commited6d7413173eb6caaab948e40b53c8cdb31de061 (patch)
treeac9c360eed606d25345eb4a9fc96885609a7fa95 /libjava/java/lang/natSystem.cc
parent1143680ecad0e21dfdc8e35df0ac24f5c63b74ce (diff)
downloadgcc-ed6d7413173eb6caaab948e40b53c8cdb31de061.zip
gcc-ed6d7413173eb6caaab948e40b53c8cdb31de061.tar.gz
gcc-ed6d7413173eb6caaab948e40b53c8cdb31de061.tar.bz2
* java/lang/natSystem.cc (arraycopy): Check for overflow.
From-SVN: r69706
Diffstat (limited to 'libjava/java/lang/natSystem.cc')
-rw-r--r--libjava/java/lang/natSystem.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/libjava/java/lang/natSystem.cc b/libjava/java/lang/natSystem.cc
index e2d4232..4a08bb1 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.