From d95242bd7ee0b04af7147c912db6a8a7e7fb0fbf Mon Sep 17 00:00:00 2001 From: akwizgran Date: Thu, 11 Mar 2021 16:59:56 +0000 Subject: [PATCH] Don't try to load attachments with unsupported content types. --- .../android/attachment/AttachmentRetrieverImpl.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetrieverImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetrieverImpl.java index 9f8c3cc15..eeb1e37a0 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetrieverImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetrieverImpl.java @@ -28,9 +28,12 @@ import javax.inject.Inject; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import static java.util.Arrays.asList; import static java.util.Objects.requireNonNull; +import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; +import static org.briarproject.bramble.util.AndroidUtils.getSupportedImageContentTypes; import static org.briarproject.bramble.util.IoUtils.tryToClose; import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.briar.android.attachment.AttachmentItem.State.AVAILABLE; @@ -86,7 +89,17 @@ class AttachmentRetrieverImpl implements AttachmentRetriever { List headers = messageHeader.getAttachmentHeaders(); List> items = new ArrayList<>(headers.size()); boolean needsSize = headers.size() == 1; + List supported = asList(getSupportedImageContentTypes()); for (AttachmentHeader h : headers) { + // Fail early if we don't support the content type + if (!supported.contains(h.getContentType())) { + if (LOG.isLoggable(INFO)) { + LOG.info("Unsupported content type " + h.getContentType()); + } + AttachmentItem item = new AttachmentItem(h, "", ERROR); + items.add(new MutableLiveData<>(item)); + continue; + } // try cache for existing item live data MutableLiveData liveData = itemsWithSize.get(h.getMessageId());