From 2d577c201219c2e7ff3bf5bfd3f3448b8975290f Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 8 Oct 2024 13:54:13 -0500 Subject: [PATCH] Non-encrypted media URLs in omemo messages --- src/main/java/eu/siacs/conversations/entities/Message.java | 2 +- .../eu/siacs/conversations/services/MessageSearchTask.java | 2 +- src/main/java/eu/siacs/conversations/utils/MessageUtils.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 4662ba9ffe36af89f29d11c5d29749bc90f0e42d..bd6164b0d3cda6e141533fadf900513ac6dfb34a 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -1378,7 +1378,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable public synchronized boolean treatAsDownloadable() { if (treatAsDownloadable == null) { - treatAsDownloadable = MessageUtils.treatAsDownloadable(this.body, isOOb()); + treatAsDownloadable = MessageUtils.treatAsDownloadable(this.body, isOOb(), encryption != ENCRYPTION_NONE); } return treatAsDownloadable; } diff --git a/src/main/java/eu/siacs/conversations/services/MessageSearchTask.java b/src/main/java/eu/siacs/conversations/services/MessageSearchTask.java index c18c94cf20ae3311e500c1ae79da417009385887..f6d5a42376401091c0fbfbebd73f42df940b4ba6 100644 --- a/src/main/java/eu/siacs/conversations/services/MessageSearchTask.java +++ b/src/main/java/eu/siacs/conversations/services/MessageSearchTask.java @@ -109,7 +109,7 @@ public class MessageSearchTask implements Runnable, Cancellable { } final String body = cursor.getString(indexBody); final boolean oob = cursor.getInt(indexOob) > 0; - if (MessageUtils.treatAsDownloadable(body,oob)) { + if (MessageUtils.treatAsDownloadable(body,oob,false)) { continue; } final String conversationUuid = cursor.getString(indexConversation); diff --git a/src/main/java/eu/siacs/conversations/utils/MessageUtils.java b/src/main/java/eu/siacs/conversations/utils/MessageUtils.java index 7039ec336f75c758e5087340fdc6e1e79263a43c..803615d23372db7a73d3fd509a2702d397c1437a 100644 --- a/src/main/java/eu/siacs/conversations/utils/MessageUtils.java +++ b/src/main/java/eu/siacs/conversations/utils/MessageUtils.java @@ -77,7 +77,7 @@ public class MessageUtils { return builder.toString(); } - public static boolean treatAsDownloadable(final String body, final boolean oob) { + public static boolean treatAsDownloadable(final String body, final boolean oob, final boolean legacyEncryption) { if (oob) return true; final String[] lines = body.split("\n"); @@ -104,7 +104,7 @@ public class MessageUtils { final boolean followedByDataUri = lines.length == 2 && lines[1].startsWith("data:"); final boolean validAesGcm = AesGcmURL.PROTOCOL_NAME.equalsIgnoreCase(protocol) && encrypted && (lines.length == 1 || followedByDataUri); final boolean validProtocol = "http".equalsIgnoreCase(protocol) || "https".equalsIgnoreCase(protocol); - final boolean validOob = validProtocol && (oob || encrypted) && lines.length == 1; + final boolean validOob = validProtocol && (oob || encrypted || (legacyEncryption && uri.getPath() != null && (uri.getPath().endsWith(".xdc") || uri.getPath().endsWith(".webp") || uri.getPath().endsWith(".gif") || uri.getPath().endsWith(".png")))) && lines.length == 1; return validAesGcm || validOob; }