From 7c4ba5446c71a91d2cbc9994a532a1c1fdd64142 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Fri, 15 Feb 2019 13:43:22 -0800 Subject: [PATCH] Throw error if incoming attachment has mismatched attachment size --- libtextsecure/message_receiver.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index 4d85ae39e..2c09da698 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -1216,7 +1216,7 @@ MessageReceiver.prototype.extend({ }, async downloadAttachment(attachment) { const encrypted = await this.server.getAttachment(attachment.id); - const { key, digest } = attachment; + const { key, digest, size } = attachment; const data = await textsecure.crypto.decryptAttachment( encrypted, @@ -1224,6 +1224,14 @@ MessageReceiver.prototype.extend({ window.Signal.Crypto.base64ToArrayBuffer(digest) ); + if (!size || size !== data.byteLength) { + throw new Error( + `downloadAttachment: Size ${size} did not match downloaded attachment size ${ + data.byteLength + }` + ); + } + return { ..._.omit(attachment, 'digest', 'key'), data,