From 9f637a602c88c353dc948e4e37bb2db65ac9b774 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 10 Sep 2024 09:19:43 -0300 Subject: [PATCH] [app] Don't crash on malformed fdroid.link Uri Fixes acra-crash-reports#740 --- .../src/main/java/org/fdroid/repo/RepoUriGetter.kt | 2 +- .../test/java/org/fdroid/repo/RepoUriGetterTest.kt | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libs/database/src/main/java/org/fdroid/repo/RepoUriGetter.kt b/libs/database/src/main/java/org/fdroid/repo/RepoUriGetter.kt index d36afb8c9..7fc8e3255 100644 --- a/libs/database/src/main/java/org/fdroid/repo/RepoUriGetter.kt +++ b/libs/database/src/main/java/org/fdroid/repo/RepoUriGetter.kt @@ -16,7 +16,7 @@ internal object RepoUriGetter { it.buildUpon().scheme("http").build() } - it.host == "fdroid.link" -> getFdroidLinkUri(it) + it.host == "fdroid.link" && it.encodedFragment != null -> getFdroidLinkUri(it) it.scheme.isNullOrBlank() -> { // assume https:// when no scheme given diff --git a/libs/database/src/test/java/org/fdroid/repo/RepoUriGetterTest.kt b/libs/database/src/test/java/org/fdroid/repo/RepoUriGetterTest.kt index 5eba87ff4..00b7a947e 100644 --- a/libs/database/src/test/java/org/fdroid/repo/RepoUriGetterTest.kt +++ b/libs/database/src/test/java/org/fdroid/repo/RepoUriGetterTest.kt @@ -90,6 +90,18 @@ internal class RepoUriGetterTest { val uri3 = RepoUriGetter.getUri("https://fdroid.link/#http://f-droid.org/repo") assertEquals("http://f-droid.org/repo", uri3.uri.toString()) assertNull(uri3.fingerprint) + + val uri4 = RepoUriGetter.getUri("https://fdroid.link/") + // we don't care what it is as long as it doesn't crash + assertNull(uri4.fingerprint) + + val uri5 = RepoUriGetter.getUri("https://fdroid.link/#foo") + // we don't care what it is as long as it doesn't crash + assertNull(uri5.fingerprint) + + val uri6 = RepoUriGetter.getUri("https://fdroid.link/#invalid://foo.bar") + // we don't care what it is as long as it doesn't crash + assertNull(uri6.fingerprint) } @Test