Improve message validation.
This commit is contained in:
parent
b2c09cf00b
commit
8d8c21f228
1 changed files with 25 additions and 28 deletions
|
@ -8,7 +8,6 @@ import org.signal.libsignal.zkgroup.groups.GroupMasterKey
|
|||
import org.signal.libsignal.zkgroup.receipts.ReceiptCredentialPresentation
|
||||
import org.whispersystems.signalservice.api.push.ServiceId
|
||||
import org.whispersystems.signalservice.api.push.ServiceId.ACI
|
||||
import org.whispersystems.signalservice.api.push.ServiceId.PNI
|
||||
import org.whispersystems.signalservice.internal.push.AttachmentPointer
|
||||
import org.whispersystems.signalservice.internal.push.Content
|
||||
import org.whispersystems.signalservice.internal.push.DataMessage
|
||||
|
@ -31,11 +30,7 @@ object EnvelopeContentValidator {
|
|||
|
||||
fun validate(envelope: Envelope, content: Content, localAci: ACI): Result {
|
||||
if (envelope.type == Envelope.Type.PLAINTEXT_CONTENT) {
|
||||
val result: Result? = createPlaintextResultIfInvalid(content)
|
||||
|
||||
if (result != null) {
|
||||
return result
|
||||
}
|
||||
validatePlaintextContent(content)?.let { return it }
|
||||
}
|
||||
|
||||
if (envelope.sourceServiceId != null && envelope.sourceServiceId.isInvalidServiceId()) {
|
||||
|
@ -370,39 +365,41 @@ object EnvelopeContentValidator {
|
|||
}
|
||||
}
|
||||
|
||||
private fun createPlaintextResultIfInvalid(content: Content): Result? {
|
||||
private fun validatePlaintextContent(content: Content): Result? {
|
||||
val errors: MutableList<String> = mutableListOf()
|
||||
|
||||
if (content.decryptionErrorMessage == null) {
|
||||
errors += "Missing DecryptionErrorMessage"
|
||||
}
|
||||
if (content.storyMessage != null) {
|
||||
errors += "Unexpected StoryMessage"
|
||||
}
|
||||
if (content.senderKeyDistributionMessage != null) {
|
||||
errors += "Unexpected SenderKeyDistributionMessage"
|
||||
}
|
||||
if (content.callMessage != null) {
|
||||
errors += "Unexpected CallMessage"
|
||||
}
|
||||
if (content.editMessage != null) {
|
||||
errors += "Unexpected EditMessage"
|
||||
}
|
||||
if (content.nullMessage != null) {
|
||||
errors += "Unexpected NullMessage"
|
||||
}
|
||||
if (content.pniSignatureMessage != null) {
|
||||
errors += "Unexpected PniSignatureMessage"
|
||||
}
|
||||
if (content.receiptMessage != null) {
|
||||
errors += "Unexpected ReceiptMessage"
|
||||
if (content.dataMessage != null) {
|
||||
errors += "Unexpected DataMessage"
|
||||
}
|
||||
if (content.syncMessage != null) {
|
||||
errors += "Unexpected SyncMessage"
|
||||
}
|
||||
if (content.callMessage != null) {
|
||||
errors += "Unexpected CallMessage"
|
||||
}
|
||||
if (content.nullMessage != null) {
|
||||
errors += "Unexpected NullMessage"
|
||||
}
|
||||
if (content.receiptMessage != null) {
|
||||
errors += "Unexpected ReceiptMessage"
|
||||
}
|
||||
if (content.typingMessage != null) {
|
||||
errors += "Unexpected TypingMessage"
|
||||
}
|
||||
if (content.senderKeyDistributionMessage != null) {
|
||||
errors += "Unexpected SenderKeyDistributionMessage"
|
||||
}
|
||||
if (content.storyMessage != null) {
|
||||
errors += "Unexpected StoryMessage"
|
||||
}
|
||||
if (content.pniSignatureMessage != null) {
|
||||
errors += "Unexpected PniSignatureMessage"
|
||||
}
|
||||
if (content.editMessage != null) {
|
||||
errors += "Unexpected EditMessage"
|
||||
}
|
||||
|
||||
return if (errors.isNotEmpty()) {
|
||||
Result.Invalid("Invalid PLAINTEXT_CONTENT! Errors: $errors")
|
||||
|
|
Loading…
Add table
Reference in a new issue