From bd5f011c0e94345b2acac57185a5957aef6d72b8 Mon Sep 17 00:00:00 2001 From: SpiritCroc <dev@spiritcroc.de> Date: Sat, 13 Aug 2022 11:06:57 +0200 Subject: [PATCH] Fix crash on incoming share throwing SecurityException Tested with org.mozilla.fennec_fdroid Version 103.1.0 (1031020) when sharing to quick contacts. Change-Id: Ie66e5945aa85fe309b1cfc42d7bad61675a1b4b8 --- .../features/share/IncomingShareFragment.kt | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/share/IncomingShareFragment.kt b/vector/src/main/java/im/vector/app/features/share/IncomingShareFragment.kt index 3e2ddc469c..b64e7c27b0 100644 --- a/vector/src/main/java/im/vector/app/features/share/IncomingShareFragment.kt +++ b/vector/src/main/java/im/vector/app/features/share/IncomingShareFragment.kt @@ -40,6 +40,7 @@ import im.vector.app.features.attachments.ShareIntentHandler import im.vector.app.features.attachments.preview.AttachmentsPreviewActivity import im.vector.app.features.attachments.preview.AttachmentsPreviewArgs import org.matrix.android.sdk.api.session.room.model.RoomSummary +import timber.log.Timber import javax.inject.Inject /** @@ -106,17 +107,24 @@ class IncomingShareFragment @Inject constructor( } } - private fun handleIncomingShareIntent(intent: Intent) = shareIntentHandler.handleIncomingShareIntent( - intent, - onFile = { - val sharedData = SharedData.Attachments(it) - viewModel.handle(IncomingShareAction.UpdateSharedData(sharedData)) - }, - onPlainText = { - val sharedData = SharedData.Text(it) - viewModel.handle(IncomingShareAction.UpdateSharedData(sharedData)) - } - ) + private fun handleIncomingShareIntent(intent: Intent): Boolean { + return try { + shareIntentHandler.handleIncomingShareIntent( + intent, + onFile = { + val sharedData = SharedData.Attachments(it) + viewModel.handle(IncomingShareAction.UpdateSharedData(sharedData)) + }, + onPlainText = { + val sharedData = SharedData.Text(it) + viewModel.handle(IncomingShareAction.UpdateSharedData(sharedData)) + } + ) + } catch (e: SecurityException) { + Timber.e(e, "Security exception handling incoming share") + false + } + } private fun handleMultipleRoomsShareDone(viewEvent: IncomingShareViewEvents.MultipleRoomsShareDone) { requireActivity().let {