From eaddfa7fd1bcbe03cc6c4c757f91af1040f876fa Mon Sep 17 00:00:00 2001 From: fiaxh Date: Tue, 15 Mar 2016 11:09:28 +0100 Subject: [PATCH] Check if path for URI is accessible The path extracted from the Cursor might not be accessible for Conversations. FileUtils accesses URI information through the ContentProvider, so this wouldn't be noticed. Fixes sharing from open-keychain's TemporaryContentProvider --- .../java/eu/siacs/conversations/utils/FileUtils.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/utils/FileUtils.java b/src/main/java/eu/siacs/conversations/utils/FileUtils.java index ad8b8640f644bf6871cf7ff21427cd050e5df7f0..6e75d41cd0188c24e3c94ba97a858066f305ad73 100644 --- a/src/main/java/eu/siacs/conversations/utils/FileUtils.java +++ b/src/main/java/eu/siacs/conversations/utils/FileUtils.java @@ -10,6 +10,8 @@ import android.os.Environment; import android.provider.DocumentsContract; import android.provider.MediaStore; +import java.io.File; + public class FileUtils { /** @@ -77,7 +79,14 @@ public class FileUtils { } // MediaStore (and general) else if ("content".equalsIgnoreCase(uri.getScheme())) { - return getDataColumn(context, uri, null, null); + String path = getDataColumn(context, uri, null, null); + if (path != null) { + File file = new File(path); + if (!file.canRead()) { + return null; + } + } + return path; } // File else if ("file".equalsIgnoreCase(uri.getScheme())) {