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
This commit is contained in:
Keith Ito
2010-05-11 10:19:06 -07:00
committed by Android Git Automerger
2 changed files with 23 additions and 0 deletions

View File

@@ -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;

View File

@@ -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"));
}
}