diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/UriUtil.kt b/app/src/main/java/org/thoughtcrime/securesms/util/UriUtil.kt index f522b9e3ef..02b74e8d56 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/UriUtil.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/UriUtil.kt @@ -9,7 +9,6 @@ import android.content.ContentResolver import android.content.Context import android.net.Uri import java.io.File -import java.io.IOException object UriUtil { @@ -22,12 +21,13 @@ object UriUtil { fun isValidExternalUri(context: Context, uri: Uri): Boolean { if (ContentResolver.SCHEME_FILE == uri.scheme) { try { - val file = File(uri.path) + val path = uri.path ?: return false + val file = File(path) return file.canonicalPath == file.path && !file.canonicalPath.startsWith("/data") && !file.canonicalPath.contains(context.packageName) - } catch (e: IOException) { + } catch (e: Exception) { return false } } else if (ContentResolver.SCHEME_CONTENT == uri.scheme) { diff --git a/app/src/test/java/org/thoughtcrime/securesms/util/UriUtilTest_isValidExternalUri.java b/app/src/test/java/org/thoughtcrime/securesms/util/UriUtilTest_isValidExternalUri.java index 2538dcf32e..b437145304 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/util/UriUtilTest_isValidExternalUri.java +++ b/app/src/test/java/org/thoughtcrime/securesms/util/UriUtilTest_isValidExternalUri.java @@ -48,6 +48,7 @@ public class UriUtilTest_isValidExternalUri { { "file:///encoded/back/reference/%2F..%2F..path%2Fto%2Fprivate.txt", false }, { "file:///public/%2E%2E%2Fprivate%2Fprivate.txt", false }, { "file:///data/no/paths/in/data", false }, + { "file://", false }, }); }