diff options
| author | 2024-06-21 16:23:22 +0000 | |
|---|---|---|
| committer | 2024-06-21 16:23:22 +0000 | |
| commit | 0478260bff07db405dab060b667a04e0bc81a4f5 (patch) | |
| tree | 3372e4ecc09d3a672b2f6401a981b86745dc0806 | |
| parent | 338f22f4c381c68a25b2a9dcc0a532b0b0922a1e (diff) | |
| parent | 841ce92aa1b350c83148ef6fb57bfff617364e1a (diff) | |
Merge "DO NOT MERGE Ignore - Sanitized uri scheme by removing scheme delimiter" into tm-dev
| -rw-r--r-- | core/java/android/net/Uri.java | 6 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/net/UriTest.java | 11 |
2 files changed, 16 insertions, 1 deletions
diff --git a/core/java/android/net/Uri.java b/core/java/android/net/Uri.java index 3da696ad0bc7..f0262e9f7566 100644 --- a/core/java/android/net/Uri.java +++ b/core/java/android/net/Uri.java @@ -1388,7 +1388,11 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { * @param scheme name or {@code null} if this is a relative Uri */ public Builder scheme(String scheme) { - this.scheme = scheme; + if (scheme != null) { + this.scheme = scheme.replace("://", ""); + } else { + this.scheme = null; + } return this; } diff --git a/core/tests/coretests/src/android/net/UriTest.java b/core/tests/coretests/src/android/net/UriTest.java index 89632a46267e..fd12e519e8f8 100644 --- a/core/tests/coretests/src/android/net/UriTest.java +++ b/core/tests/coretests/src/android/net/UriTest.java @@ -18,6 +18,7 @@ package android.net; import android.content.ContentUris; import android.os.Parcel; +import android.platform.test.annotations.AsbSecurityTest; import androidx.test.filters.SmallTest; @@ -88,6 +89,16 @@ public class UriTest extends TestCase { assertNull(u.getHost()); } + @AsbSecurityTest(cveBugId = 261721900) + @SmallTest + public void testSchemeSanitization() { + Uri uri = new Uri.Builder() + .scheme("http://https://evil.com:/te:st/") + .authority("google.com").path("one/way").build(); + assertEquals("httphttpsevil.com:/te:st/", uri.getScheme()); + assertEquals("httphttpsevil.com:/te:st/://google.com/one/way", uri.toString()); + } + @SmallTest public void testStringUri() { assertEquals("bob lee", |