diff options
| author | 2017-11-07 22:41:48 +0000 | |
|---|---|---|
| committer | 2017-11-07 22:41:48 +0000 | |
| commit | 49dfdd66cc29266cf58ea834c244510aa33bce8e (patch) | |
| tree | 4e6671fb0c0750a5974a92cfbf03475f910db8a1 | |
| parent | b353fbcb7ab65594f87fb4565c73072ee5961666 (diff) | |
| parent | f61daaa333f9247024d82354a293d9a07e7b90a8 (diff) | |
Adjust Uri host parsing to use last instead of first @. am: cd6228dd37 am: 6a9c7c4814 am: 4158c9fbf3 am: eee677386e am: 49e5fca362 am: 240b55de2c am: 3ac5dabc21
am: f61daaa333
Change-Id: Iee679fb3a115f6c1a2683905e5b392ec665aee33
| -rw-r--r-- | core/java/android/net/Uri.java | 6 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/net/UriTest.java | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/core/java/android/net/Uri.java b/core/java/android/net/Uri.java index 09af05c0dfba..a84f74a80859 100644 --- a/core/java/android/net/Uri.java +++ b/core/java/android/net/Uri.java @@ -1065,7 +1065,7 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { return null; } - int end = authority.indexOf('@'); + int end = authority.lastIndexOf('@'); return end == NOT_FOUND ? null : authority.substring(0, end); } @@ -1089,7 +1089,7 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { } // Parse out user info and then port. - int userInfoSeparator = authority.indexOf('@'); + int userInfoSeparator = authority.lastIndexOf('@'); int portSeparator = authority.indexOf(':', userInfoSeparator); String encodedHost = portSeparator == NOT_FOUND @@ -1115,7 +1115,7 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { // Make sure we look for the port separtor *after* the user info // separator. We have URLs with a ':' in the user info. - int userInfoSeparator = authority.indexOf('@'); + int userInfoSeparator = authority.lastIndexOf('@'); int portSeparator = authority.indexOf(':', userInfoSeparator); if (portSeparator == NOT_FOUND) { diff --git a/core/tests/coretests/src/android/net/UriTest.java b/core/tests/coretests/src/android/net/UriTest.java index 6fa28b1ccdaa..27b7f9e185bb 100644 --- a/core/tests/coretests/src/android/net/UriTest.java +++ b/core/tests/coretests/src/android/net/UriTest.java @@ -187,6 +187,11 @@ public class UriTest extends TestCase { uri = Uri.parse("http://localhost"); assertEquals("localhost", uri.getHost()); assertEquals(-1, uri.getPort()); + + uri = Uri.parse("http://a:a@example.com:a@example2.com/path"); + assertEquals("a:a@example.com:a@example2.com", uri.getAuthority()); + assertEquals("example2.com", uri.getHost()); + assertEquals(-1, uri.getPort()); } @SmallTest |