am a8d8cb12
: am be65399b
: Merge "Fix for bug 2672749: StringIndexOutOfBoundsException in Uri.getQueryParameter" into froyo
Merge commit 'a8d8cb12b3dbe5e196a3ff2549f8594a704ecde4' into kraken * commit 'a8d8cb12b3dbe5e196a3ff2549f8594a704ecde4': Fix for bug 2672749: StringIndexOutOfBoundsException in Uri.getQueryParameter
This commit is contained in:
@ -1588,6 +1588,9 @@ public abstract class Uri implements Parcelable, Comparable<Uri> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
final int equalsIndex = keyIndex + encodedKeyLength;
|
final int equalsIndex = keyIndex + encodedKeyLength;
|
||||||
|
if (equalsIndex >= query.length()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (query.charAt(equalsIndex) != '=') {
|
if (query.charAt(equalsIndex) != '=') {
|
||||||
encodedKeySearchIndex = equalsIndex + 1;
|
encodedKeySearchIndex = equalsIndex + 1;
|
||||||
continue;
|
continue;
|
||||||
|
@ -582,5 +582,25 @@ public class UriTest extends TestCase {
|
|||||||
.appendQueryParameter("bkey", "e f")
|
.appendQueryParameter("bkey", "e f")
|
||||||
.build();
|
.build();
|
||||||
assertNull(uri.getQueryParameter("key"));
|
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"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user