diff --git a/android/app/src/main/java/com/mattermost/helpers/RealPathUtil.java b/android/app/src/main/java/com/mattermost/helpers/RealPathUtil.java index 262b2ae4c..a34bf3abb 100644 --- a/android/app/src/main/java/com/mattermost/helpers/RealPathUtil.java +++ b/android/app/src/main/java/com/mattermost/helpers/RealPathUtil.java @@ -97,20 +97,24 @@ public class RealPathUtil { File tmpFile; String fileName = null; + if (uri == null || uri.isRelative()) { + return null; + } + // Try and get the filename from the Uri try { Cursor returnCursor = context.getContentResolver().query(uri, null, null, null, null); int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); returnCursor.moveToFirst(); - fileName = returnCursor.getString(nameIndex); + fileName = sanitizeFilename(returnCursor.getString(nameIndex)); } catch (Exception e) { // just continue to get the filename with the last segment of the path } try { - if (fileName == null) { - fileName = uri.getLastPathSegment().toString().trim(); + if (TextUtils.isEmpty(fileName)) { + fileName = sanitizeFilename(uri.getLastPathSegment().toString().trim()); } @@ -231,4 +235,14 @@ public class RealPathUtil { fileOrDirectory.delete(); } + + private static String sanitizeFilename(String filename) { + if (filename == null) { + return null; + } + + File f = new File(filename); + return f.getName(); + } + }