Scheme-less stream URLs throw NullPointerException instead of URISyntaxException
Los mantenedores suelen responder en 2 días
Ya se ha fusionado un pull request relacionado.
- #2219 de @blihio — fusionado
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 82/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Área
- networking
Línea de trabajo
Empieza en la clase UrlParser del módulo common, en parse, donde la comprobación de soporte de protocolos solo se ejecuta cuando uri.scheme no es null. El constructor asigna después scheme = uri.scheme, lo que lanza la NPE. Ejecuta UrlParser.parse("//localhost/live/test", arrayOf("rtmp")) para reproducirlo. Está terminado cuando una entrada sin esquema lanza URISyntaxException y las pruebas existentes del módulo common siguen pasando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
UrlParser.parse allows a scheme-less URI with a host and path to pass validation, then throws NullPointerException when assigning the null scheme to a non-null Kotlin property.
The streaming clients catch URISyntaxException around URL parsing, so this input bypasses their malformed-endpoint handling.
To reproduce
Call either of the following:
UrlParser.parse("//localhost/live/test", arrayOf("rtmp"))
UrlParser.parse("//127.0.0.1:1935/live/test", arrayOf("rtmp"))
Both produce:
java.lang.NullPointerException: getScheme(...) must not be null
The current condition only checks whether the protocol is supported when uri.scheme != null. A missing scheme skips this check, and the constructor later fails at scheme = uri.scheme.
Expected behavior
Reject a missing scheme with URISyntaxException, as with an unsupported scheme, so callers can use the existing malformed-URL handling.
Environment
- Source version: 2.8.1
- Commit: 82a9cb4ee4babdc792d2ccee8b893f2b36207d40
- Module: common
- Class: UrlParser
- Reproduced on the JVM and in Android local unit tests using JDK 17 and Gradle 9.7.1.
- A device or media server is not required to reproduce this parser failure.
Additional context
Two regression tests reproduce the issue: a scheme-less hostname URL and a scheme-less IPv4 URL with an explicit port. Both fail with NPE before the fix and pass afterward.
With only the fix and its tests applied, all 100 common and 25 encoder local unit tests pass.
A full client connection or device-level crash was not tested.
- Lenguaje dominante
- Kotlin
- Estrellas
- 3k
- Forks
- 946
- Merge medio
- 3 d 17 h
- PR fusionados (30 d)
- 9
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pedroSG94/RootEncoder
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
pedroSG94/RootEncoder#2224 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
pedroSG94/RootEncoder#2213 ·
Los mantenedores suelen responder en 2 días
-
WHIP client can't connect to `a=ice-lite` + `a=setup:passive` servers (e.g. Cloudflare Stream)Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 43/100
pedroSG94/RootEncoder#2220 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
pedroSG94/RootEncoder#2207 · 1 reacción ·
Los mantenedores suelen responder en 2 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
pedroSG94/RootEncoder#2203 ·
Los mantenedores suelen responder en 2 días
Todos los issues de pedroSG94/RootEncoder
Issues similares
-
Android: keyboard height remains stale when IME disappears without a closing animationPosiblemente ocupada @jaxnnux la tomó hoy. AbiertoMissing info Missing repro Platform: Android
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
software-mansion/react-native-reanimated#11106 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
software-mansion/enriched-markdown#1118 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
ScreenOrientationInstrumentation.uninstall() does not clear detector reference and lacks idempotent safe no-op handlingPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
open-telemetry/opentelemetry-android#2170 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
intellij-elixir/intellij-elixir#4585 ·
Los mantenedores suelen responder en 1 día