1.1 --- a/src/share/vm/prims/jni.cpp Thu Dec 21 19:11:17 2017 -0500 1.2 +++ b/src/share/vm/prims/jni.cpp Fri Dec 22 13:10:41 2017 -0800 1.3 @@ -3832,7 +3832,7 @@ 1.4 EntryProbe; \ 1.5 DT_VOID_RETURN_MARK(Get##Result##ArrayRegion); \ 1.6 typeArrayOop src = typeArrayOop(JNIHandles::resolve_non_null(array)); \ 1.7 - if (start < 0 || len < 0 || ((unsigned int)start + (unsigned int)len > (unsigned int)src->length())) { \ 1.8 + if (start < 0 || len < 0 || (start > src->length() - len)) { \ 1.9 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); \ 1.10 } else { \ 1.11 if (len > 0) { \ 1.12 @@ -3916,7 +3916,7 @@ 1.13 EntryProbe; \ 1.14 DT_VOID_RETURN_MARK(Set##Result##ArrayRegion); \ 1.15 typeArrayOop dst = typeArrayOop(JNIHandles::resolve_non_null(array)); \ 1.16 - if (start < 0 || len < 0 || ((unsigned int)start + (unsigned int)len > (unsigned int)dst->length())) { \ 1.17 + if (start < 0 || len < 0 || (start > dst->length() - len)) { \ 1.18 THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); \ 1.19 } else { \ 1.20 if (len > 0) { \ 1.21 @@ -4200,7 +4200,7 @@ 1.22 DT_VOID_RETURN_MARK(GetStringRegion); 1.23 oop s = JNIHandles::resolve_non_null(string); 1.24 int s_len = java_lang_String::length(s); 1.25 - if (start < 0 || len < 0 || start + len > s_len) { 1.26 + if (start < 0 || len < 0 || start > s_len - len) { 1.27 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException()); 1.28 } else { 1.29 if (len > 0) { 1.30 @@ -4229,7 +4229,7 @@ 1.31 DT_VOID_RETURN_MARK(GetStringUTFRegion); 1.32 oop s = JNIHandles::resolve_non_null(string); 1.33 int s_len = java_lang_String::length(s); 1.34 - if (start < 0 || len < 0 || start + len > s_len) { 1.35 + if (start < 0 || len < 0 || start > s_len - len) { 1.36 THROW(vmSymbols::java_lang_StringIndexOutOfBoundsException()); 1.37 } else { 1.38 //%note jni_7