From 950d9d5a4c376b39247ecd7d5bd79eec36709d9e Mon Sep 17 00:00:00 2001 From: Nicholas Tinsley Date: Wed, 31 Jan 2024 14:27:01 -0500 Subject: [PATCH] Validate image preview as URI. Resolves #13392. --- .../thoughtcrime/securesms/util/LinkUtil.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/LinkUtil.kt b/app/src/main/java/org/thoughtcrime/securesms/util/LinkUtil.kt index 704192e4c4..2422480a63 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/LinkUtil.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/LinkUtil.kt @@ -2,6 +2,8 @@ package org.thoughtcrime.securesms.util import okhttp3.HttpUrl import org.thoughtcrime.securesms.stickers.StickerUrl +import java.net.URI +import java.net.URISyntaxException import java.util.Objects import java.util.regex.Pattern @@ -37,6 +39,10 @@ object LinkUtil { return false } + if (!isValidURI(linkUrl)) { + return false + } + return HttpUrl.parse(linkUrl)?.scheme() == "https" } @@ -85,5 +91,19 @@ object LinkUtil { ) } + @JvmStatic + private fun isValidURI(linkUri: String?): Boolean { + return if (linkUri == null) { + false + } else { + try { + val ignored = URI(linkUri) + true + } catch (e: URISyntaxException) { + false + } + } + } + private data class LegalCharactersResult(val isLegal: Boolean, val domain: String? = null) }