From ce9d8f90545276bff9a5c2a544a5563eb4a314d9 Mon Sep 17 00:00:00 2001 From: Alexander Borsuk Date: Sun, 28 May 2023 11:52:15 +0200 Subject: [PATCH] [android] Fixes security exception when bookmarks are imported An example of the exception after selecting Downloads folder: java.lang.SecurityException: Document 4450 is not a descendant of downloads Signed-off-by: Alexander Borsuk --- .../bookmarks/data/BookmarkManager.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/android/src/app/organicmaps/bookmarks/data/BookmarkManager.java b/android/src/app/organicmaps/bookmarks/data/BookmarkManager.java index d52f7106d6..cf46904b0f 100644 --- a/android/src/app/organicmaps/bookmarks/data/BookmarkManager.java +++ b/android/src/app/organicmaps/bookmarks/data/BookmarkManager.java @@ -427,6 +427,11 @@ public enum BookmarkManager filename = cursor.getString(columnIndex); } } + catch (Exception ex) + { + Logger.e(TAG, ex + " while querying " + uri); + ex.printStackTrace(); + } } if (filename == null) @@ -434,9 +439,7 @@ public enum BookmarkManager filename = uri.getPath(); int cut = filename.lastIndexOf('/'); if (cut != -1) - { filename = filename.substring(cut + 1); - } } // See IsBadCharForPath() filename = filename.replaceAll("[:/\\\\<>\"|?*]", ""); @@ -469,15 +472,12 @@ public enum BookmarkManager @WorkerThread public boolean importBookmarksFile(@NonNull ContentResolver resolver, @NonNull Uri uri, @NonNull File tempDir) { - String filename = getBookmarksFilenameFromUri(resolver, uri); + final String filename = getBookmarksFilenameFromUri(resolver, uri); if (filename == null) - { - Logger.w(TAG, "Missing path in bookmarks URI: " + uri); return false; - } - Logger.w(TAG, "Downloading bookmarks file " + uri); - File tempFile = new File(tempDir, filename); + Logger.w(TAG, "Downloading bookmarks file " + uri + " with file name " + filename); + final File tempFile = new File(tempDir, filename); try { StorageUtils.copyFile(resolver, uri, tempFile);