diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index 837dcee5d9..336aa4d054 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -434,7 +434,8 @@ class RustMatrixAuthenticationService( qrCodeData: QrCodeData, ): Client { Timber.d("Creating client for QR Code login with simplified sliding sync") - // The 2025 versions of MSC4108 should always give us the baseUrl + // The 2025 version of MSC4108 will always give us the baseUrl and guarantees it to be a well-formed URL + // The 2024 version always has null baseUrl and uses the serverName instead, which can be null or malformed val baseUrlOrServerName = qrCodeData.baseUrl() ?: qrCodeData.serverName() if (baseUrlOrServerName == null) { @@ -444,6 +445,10 @@ class RustMatrixAuthenticationService( throw HumanQrLoginException.OtherDeviceNotSignedIn() } + if (baseUrlOrServerName.isBlank()) { + error("The QR code contains an empty base URL or server name, which is invalid") + } + return rustMatrixClientFactory .getBaseClientBuilder( sessionPaths = sessionPaths,