diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/EnvelopeContentValidator.kt b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/EnvelopeContentValidator.kt index d73a137700..1ba26cbfff 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/EnvelopeContentValidator.kt +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/messages/EnvelopeContentValidator.kt @@ -61,7 +61,7 @@ object EnvelopeContentValidator { content.typingMessage != null -> validateTypingMessage(envelope, content.typingMessage) content.decryptionErrorMessage != null -> validateDecryptionErrorMessage(content.decryptionErrorMessage.toByteArray()) content.storyMessage != null -> validateStoryMessage(content.storyMessage) - content.editMessage != null -> validateEditMessage(content.editMessage) + content.editMessage != null -> validateEditMessage(envelope, content.editMessage) content.pniSignatureMessage != null -> Result.Valid content.senderKeyDistributionMessage != null -> Result.Valid else -> Result.Invalid("Content is empty!") @@ -182,7 +182,7 @@ object EnvelopeContentValidator { } else if (syncMessage.sent.storyMessageRecipients.isNotEmpty()) { Result.Valid } else if (syncMessage.sent.editMessage != null) { - validateEditMessage(syncMessage.sent.editMessage) + validateEditMessage(envelope, syncMessage.sent.editMessage) } else { Result.Invalid("[SyncMessage] Empty SyncMessage.sent!") } @@ -281,7 +281,7 @@ object EnvelopeContentValidator { return Result.Valid } - private fun validateEditMessage(editMessage: EditMessage): Result { + private fun validateEditMessage(envelope: Envelope, editMessage: EditMessage): Result { if (editMessage.dataMessage == null) { return Result.Invalid("[EditMessage] No data message present") } @@ -299,23 +299,7 @@ object EnvelopeContentValidator { ) } - if (dataMessage.preview.any { it.image != null && it.image.isPresentAndInvalid() }) { - return Result.Invalid("[EditMessage] Invalid AttachmentPointer on DataMessage.previewList.image!") - } - - if (dataMessage.bodyRanges.any { it.mentionAci != null && it.mentionAci.isNullOrInvalidAci() }) { - return Result.Invalid("[EditMessage] Invalid UUID on body range!") - } - - if (dataMessage.attachments.any { it.isNullOrInvalid() }) { - return Result.Invalid("[EditMessage] Invalid attachments!") - } - - if (dataMessage.groupV2 != null) { - validateGroupContextV2(dataMessage.groupV2, "[EditMessage]")?.let { return it } - } - - return Result.Valid + return validateDataMessage(envelope, dataMessage) } private fun AttachmentPointer?.isNullOrInvalid(): Boolean {