From 17e0fd22b12cceca8430a16578ec0935a409ea26 Mon Sep 17 00:00:00 2001 From: Lavamancer Date: Wed, 28 Feb 2024 17:24:29 +0100 Subject: [PATCH] Fixed removal of user info for URLs that contain encoded @ characters --- .../androidx/media3/exoplayer/rtsp/RtspMessageUtil.java | 2 +- .../media3/exoplayer/rtsp/RtspMessageUtilTest.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtspMessageUtil.java b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtspMessageUtil.java index bdd6d4cd96..7c5b09fcf6 100644 --- a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtspMessageUtil.java +++ b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtspMessageUtil.java @@ -192,7 +192,7 @@ import java.util.regex.Pattern; } // The Uri must include a "@" if the user info is non-null. - String authorityWithUserInfo = checkNotNull(uri.getAuthority()); + String authorityWithUserInfo = checkNotNull(uri.getEncodedAuthority()); checkArgument(authorityWithUserInfo.contains("@")); String authority = Util.split(authorityWithUserInfo, "@")[1]; return uri.buildUpon().encodedAuthority(authority).build(); diff --git a/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/RtspMessageUtilTest.java b/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/RtspMessageUtilTest.java index 7439ea3eeb..02799e8853 100644 --- a/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/RtspMessageUtilTest.java +++ b/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/RtspMessageUtilTest.java @@ -449,6 +449,13 @@ public final class RtspMessageUtilTest { .isEqualTo(Uri.parse("rtsp://foo.bar:5050/foo.mkv")); } + @Test + public void removeUserInfo_withEncodedAtInUserInfo() { + Uri uri = Uri.parse("rtsp://user%40name:pass@foo.bar/foo.mkv"); + assertThat(RtspMessageUtil.removeUserInfo(uri)) + .isEqualTo(Uri.parse("rtsp://foo.bar/foo.mkv")); + } + @Test public void parseContentLengthHeader_withContentLengthOver31Bits_succeeds() throws Exception { String line = "Content-Length: 1000000000000000";