From c1fabcd46bb7e9b50351a17c635d82641e80b6b3 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Sun, 17 Apr 2022 11:51:49 +0100 Subject: [PATCH] Rethrow SecurityExceptions when opening images. --- .../attachment/AttachmentCreationTask.java | 18 +++++++++++------- .../android/settings/SettingsViewModel.java | 11 ++++++++--- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreationTask.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreationTask.java index f9dd759b4..f2451de10 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreationTask.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreationTask.java @@ -26,6 +26,7 @@ import static org.briarproject.bramble.util.IoUtils.tryToClose; import static org.briarproject.bramble.util.LogUtils.logDuration; import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.LogUtils.now; +import static org.briarproject.briar.android.attachment.media.ImageCompressor.MIME_TYPE; @NotNullByDefault class AttachmentCreationTask { @@ -100,14 +101,17 @@ class AttachmentCreationTask { if (!asList(getSupportedImageContentTypes()).contains(contentType)) { throw new UnsupportedMimeTypeException(contentType, uri); } - InputStream is = contentResolver.openInputStream(uri); - if (is == null) throw new IOException(); - is = imageCompressor - .compressImage(is, contentType); + InputStream is; + try { + is = contentResolver.openInputStream(uri); + if (is == null) throw new IOException(); + } catch (SecurityException e) { + throw new IOException(e); + } + is = imageCompressor.compressImage(is, contentType); long timestamp = System.currentTimeMillis(); - AttachmentHeader h = messagingManager - .addLocalAttachment(groupId, timestamp, - ImageCompressor.MIME_TYPE, is); + AttachmentHeader h = messagingManager.addLocalAttachment(groupId, + timestamp, MIME_TYPE, is); tryToClose(is, LOG, WARNING); logDuration(LOG, "Storing attachment", start); return h; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java index 694460934..df1788712 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java @@ -231,9 +231,14 @@ class SettingsViewModel extends DbViewModel implements EventListener { if (!asList(getSupportedImageContentTypes()).contains(contentType)) { throw new UnsupportedMimeTypeException(contentType, uri); } - InputStream is = contentResolver.openInputStream(uri); - if (is == null) throw new IOException( - "ContentResolver returned null when opening InputStream"); + InputStream is; + try { + is = contentResolver.openInputStream(uri); + if (is == null) throw new IOException( + "ContentResolver returned null when opening InputStream"); + } catch (SecurityException e) { + throw new IOException(e); + } InputStream compressed = imageCompressor.compressImage(is, contentType); runOnDbThread(() -> {