From 578bf6732c72d39670d3892825d828c3d02a2b44 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sun, 4 Aug 2019 16:06:46 +0200 Subject: [PATCH] Fixes crash cluster b1150e0b --- .../quasseldroid/ui/info/core/CoreInfoFragment.kt | 8 +++++++- .../viewmodel/helper/QuasselViewModelHelper.kt | 10 +++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt index e4686c0bf..6215546c3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt @@ -52,6 +52,7 @@ import org.threeten.bp.ZoneId import org.threeten.bp.format.DateTimeFormatter import org.threeten.bp.format.FormatStyle import javax.inject.Inject +import javax.net.ssl.SSLPeerUnverifiedException class CoreInfoFragment : ServiceBoundFragment() { @@ -163,7 +164,12 @@ class CoreInfoFragment : ServiceBoundFragment() { } modelHelper.sslSession.toLiveData().observe(this, Observer { - val certificateChain = it?.orNull()?.peerCertificateChain?.map(X509Helper::convert).orEmpty() + val peerCertificateChain = try { + it?.orNull()?.peerCertificateChain + } catch (ignored: SSLPeerUnverifiedException) { + null + } + val certificateChain = peerCertificateChain?.mapNotNull(X509Helper::convert).orEmpty() val leafCertificate = certificateChain.firstOrNull() if (leafCertificate != null) { secureCertificate.text = requireContext().getString( diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/helper/QuasselViewModelHelper.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/helper/QuasselViewModelHelper.kt index 717f4dcfc..61f74827b 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/helper/QuasselViewModelHelper.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/helper/QuasselViewModelHelper.kt @@ -39,7 +39,7 @@ import de.kuschku.quasseldroid.viewmodel.QuasselViewModel import de.kuschku.quasseldroid.viewmodel.data.* import io.reactivex.Observable import javax.inject.Inject -import javax.net.ssl.SSLSession +import javax.net.ssl.SSLPeerUnverifiedException open class QuasselViewModelHelper @Inject constructor( val quassel: QuasselViewModel @@ -80,8 +80,12 @@ open class QuasselViewModelHelper @Inject constructor( } val sslSession = connectedSession.flatMapSwitchMap(ISession::sslSession) - val peerCertificateChain = sslSession.mapMap(SSLSession::getPeerCertificateChain).mapMap { - it.mapNotNull(X509Helper::convert) + val peerCertificateChain = sslSession.mapMapNullable { + try { + it.peerCertificateChain.mapNotNull(X509Helper::convert) + } catch (ignored: SSLPeerUnverifiedException) { + null + } }.mapOrElse(emptyList()) val leafCertificate = peerCertificateChain.map { Optional.ofNullable(it.firstOrNull()) } -- GitLab