diff options
author | Keith Ito <kito@google.com> | 2010-05-11 10:19:06 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-05-11 10:19:06 -0700 |
commit | a8d8cb12b3dbe5e196a3ff2549f8594a704ecde4 (patch) | |
tree | acf22cac60be1b6f55e10d14e4bbaa790a56e534 | |
parent | 373b4913ab5398736551ab718eb8c39d6f76e5d0 (diff) | |
parent | be65399baf23855094596e27c25763ff92e9e027 (diff) | |
download | frameworks_base-a8d8cb12b3dbe5e196a3ff2549f8594a704ecde4.zip frameworks_base-a8d8cb12b3dbe5e196a3ff2549f8594a704ecde4.tar.gz frameworks_base-a8d8cb12b3dbe5e196a3ff2549f8594a704ecde4.tar.bz2 |
am be65399b: Merge "Fix for bug 2672749: StringIndexOutOfBoundsException in Uri.getQueryParameter" into froyo
Merge commit 'be65399baf23855094596e27c25763ff92e9e027' into froyo-plus-aosp
* commit 'be65399baf23855094596e27c25763ff92e9e027':
Fix for bug 2672749: StringIndexOutOfBoundsException in Uri.getQueryParameter
-rw-r--r-- | core/java/android/net/Uri.java | 3 | ||||
-rw-r--r-- | core/tests/coretests/src/android/net/UriTest.java | 20 |
2 files changed, 23 insertions, 0 deletions
diff --git a/core/java/android/net/Uri.java b/core/java/android/net/Uri.java index eca4569..47faaba 100644 --- a/core/java/android/net/Uri.java +++ b/core/java/android/net/Uri.java @@ -1588,6 +1588,9 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { break; } final int equalsIndex = keyIndex + encodedKeyLength; + if (equalsIndex >= query.length()) { + break; + } if (query.charAt(equalsIndex) != '=') { encodedKeySearchIndex = equalsIndex + 1; continue; diff --git a/core/tests/coretests/src/android/net/UriTest.java b/core/tests/coretests/src/android/net/UriTest.java index 095ee13..a5fda20 100644 --- a/core/tests/coretests/src/android/net/UriTest.java +++ b/core/tests/coretests/src/android/net/UriTest.java @@ -582,5 +582,25 @@ public class UriTest extends TestCase { .appendQueryParameter("bkey", "e f") .build(); assertNull(uri.getQueryParameter("key")); + + // key is a prefix or suffix of the query + uri = Uri.parse("http://test/?qq=foo"); + assertNull(uri.getQueryParameter("q")); + assertNull(uri.getQueryParameter("oo")); + + // escaped keys + uri = Uri.parse("http://www.google.com/?a%20b=foo&c%20d="); + assertEquals("foo", uri.getQueryParameter("a b")); + assertEquals("", uri.getQueryParameter("c d")); + assertNull(uri.getQueryParameter("e f")); + assertNull(uri.getQueryParameter("b")); + assertNull(uri.getQueryParameter("c")); + assertNull(uri.getQueryParameter(" d")); + + // empty values + uri = Uri.parse("http://www.google.com/?a=&b=&&c="); + assertEquals("", uri.getQueryParameter("a")); + assertEquals("", uri.getQueryParameter("b")); + assertEquals("", uri.getQueryParameter("c")); } } |