diff --git a/common/src/main/java/com/pedro/common/UrlParser.kt b/common/src/main/java/com/pedro/common/UrlParser.kt index 9e19c0cab..aaeb79c37 100644 --- a/common/src/main/java/com/pedro/common/UrlParser.kt +++ b/common/src/main/java/com/pedro/common/UrlParser.kt @@ -16,7 +16,7 @@ class UrlParser private constructor( @Throws(URISyntaxException::class) fun parse(endpoint: String, requiredProtocol: Array): UrlParser { val uri = URI(endpoint.substringBefore("?")) - if (uri.scheme != null && !requiredProtocol.contains(uri.scheme.trim())) { + if (uri.scheme == null || !requiredProtocol.contains(uri.scheme.trim())) { throw URISyntaxException(endpoint, "Invalid protocol: ${uri.scheme}") } if (uri.userInfo != null && !uri.userInfo.contains(":")) { diff --git a/common/src/test/java/com/pedro/common/UrlParserTest.kt b/common/src/test/java/com/pedro/common/UrlParserTest.kt index 1bf5e26fa..9c6349889 100644 --- a/common/src/test/java/com/pedro/common/UrlParserTest.kt +++ b/common/src/test/java/com/pedro/common/UrlParserTest.kt @@ -9,6 +9,16 @@ import java.net.URISyntaxException */ class UrlParserTest { + @Test(expected = URISyntaxException::class) + fun rejectUrlWithoutScheme() { + UrlParser.parse("//localhost/live/test", arrayOf("rtmp")) + } + + @Test(expected = URISyntaxException::class) + fun rejectUrlWithoutSchemeWithExplicitPort() { + UrlParser.parse("//127.0.0.1:1935/live/test", arrayOf("rtmp")) + } + @Test fun testRtmpUrls() { try { @@ -441,4 +451,4 @@ class UrlParserTest { arrayOf("rtmp") ) } -} \ No newline at end of file +}