Merge "String : Fix integer overflow in getChars."
diff --git a/luni/src/test/java/libcore/java/lang/StringTest.java b/luni/src/test/java/libcore/java/lang/StringTest.java
index 2ba6109..1f3320c 100644
--- a/luni/src/test/java/libcore/java/lang/StringTest.java
+++ b/luni/src/test/java/libcore/java/lang/StringTest.java
@@ -425,4 +425,16 @@
         assertEquals(7, hello.codePointCount(5, 12));
         assertEquals(2, hello.codePointCount(10, 12));
     }
+
+    // http://b/26444984
+    public void testGetCharsOverflow() {
+        int srcBegin = Integer.MAX_VALUE; //2147483647
+        int srcEnd = srcBegin + 10;  //-2147483639
+        try {
+            // The output array size must be larger than |srcEnd - srcBegin|.
+            "yes".getChars(srcBegin, srcEnd, new char[256], 0);
+            fail();
+        } catch (IllegalArgumentException expected) {
+        }
+    }
 }
diff --git a/ojluni/src/main/java/java/lang/String.java b/ojluni/src/main/java/java/lang/String.java
index a0329b0..5023da8 100755
--- a/ojluni/src/main/java/java/lang/String.java
+++ b/ojluni/src/main/java/java/lang/String.java
@@ -730,7 +730,7 @@
         }
 
         int count = srcEnd - srcBegin;
-        if (count < 0) {
+        if (srcEnd < srcBegin) {
             throw new StringIndexOutOfBoundsException(this, srcBegin, count);
         }