Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

issue #5247 add restriction when rendering large message #5248

Merged
merged 9 commits into from
Jun 30, 2023
11 changes: 11 additions & 0 deletions extension/js/common/message-renderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,16 @@ export class MessageRenderer {
};
};

private clipMessageIfLimitExceeds = (decryptedContent: string) => {
const maxDecryptedContentLength = 100000;
const base64InlineImageRegex = /<img src="data:image\/[^;]+;base64,[^"]+" name="(\w+\.\w+)" title="[^"]+">/;
martgil marked this conversation as resolved.
Show resolved Hide resolved
const content = decryptedContent.replace(base64InlineImageRegex, '');
if (content.length > maxDecryptedContentLength) {
return decryptedContent.substring(0, maxDecryptedContentLength) + ' [clipped - message too large]';
}
return decryptedContent;
};

private decideDecryptedContentFormattingAndRender = async (
signerEmail: string | undefined,
verificationPubs: string[],
Expand Down Expand Up @@ -557,6 +567,7 @@ export class MessageRenderer {
plainSubject
);
}
decryptedContent = this.clipMessageIfLimitExceeds(decryptedContent);
renderModule.separateQuotedContentAndRenderText(decryptedContent, isHtml);
await MessageRenderer.renderPgpSignatureCheckResult(renderModule, sigResult, Boolean(signerEmail), retryVerification);
if (renderableAttachments.length) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"acctEmail": "flowcrypt.compatibility@gmail.com",
"full": {
"id": "1890b42720e9f5f5",
"threadId": "1890b41e36078a4a",
"labelIds": [
"IMPORTANT",
"Label_15",
"SENT",
"INBOX"
],
"snippet": "-----BEGIN PGP MESSAGE----- hQIMA0taL/zmLZUBAQ//TRWLr69QAgT87anD2UUiC0II70wJSoogWwlmMZscuMoV QBIdrq5PCblvPbdSpZSGc0JIwD1PoyvLvoS005OV7oi6bbEXiReaSdHkFpqvK6K2 91ROo8Df8KjS9mmNdVRk9/",
"payload": {
"partId": "",
"mimeType": "multipart/alternative",
"filename": "",
"headers": [
{
"name": "MIME-Version",
"value": "1.0"
},
{
"name": "Date",
"value": "Fri, 30 Jun 2023 15:44:11 +0800"
},
{
"name": "Subject",
"value": "flowcrypt-browser #5248 encrypted"
},
{
"name": "From",
"value": "sender@domain.com"
},
{
"name": "To",
"value": "flowcrypt.compatibility@gmail.com"
},
{
"name": "Content-Type",
"value": "multipart/alternative; boundary=\"00000000000094d83d05ff53fbfb\""
}
],
"body": {
"size": 0
},
"parts": [
{
"partId": "0",
"mimeType": "text/plain",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "text/plain; charset=\"UTF-8\""
}
],
"body": {
"size": 1069,
"data": "LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tDQoNCmhRSU1BMHRhTC96bUxaVUJBUS8vVFJXTHI2OVFBZ1Q4N2FuRDJVVWlDMElJNzB3SlNvb2dXd2xtTVpzY3VNb1YNClFCSWRycTVQQ2JsdlBiZFNwWlNHYzBKSXdEMVBveXZMdm9TMDA1T1Y3b2k2YmJFWGlSZWFTZEhrRnBxdks2SzINCjkxUk9vOERmOEtqUzltbU5kVlJrOS9XUkhNV2xCVTQ5c0VrSUhucnN6dmZySlJMV2wzelJwTnRiOTk3anFNeDYNCjhBaFc1ZG9VMGlVUFF0cnZaK0hEaW5md2JidDdoZU90eWFmVG5pOU1qSGU0OU15a2FZV1loYmthVEkwbVh2K2sNCjY0OFJhbFFkaklDcExVckxjTUE1QlhrdGlEKzd5cEszc3QvczAyMEZuOCtmd2NFa3hnNVNQclRTRjg1Q2s3WmYNCjI1VnpRd3RqWFhyTU1yK1AzK1VVcTNmSTVhMmpaZ2hkY1pJVmVXVXBBWWQ1c01lSGR0TkpMUzJSYmlMeitSVCsNClJGUUw5U0VkcU16RDRkbDZ2UFVmVm0rUGJzZUJpV2haS1EzU2RVNVZza1BhUnQ5RlhlRFVVSDhsb2kvVmdzVkoNCnpuOW9IQlJKQXdHLzVVWHlhQ0U1T1dLRTQ5ZXRzcWJSWW1ITW5GQ1RUSW81bWxmUWJpR1crbHdKRkFRNU5DcWkNClg2MXBIRnN2Uzh0Tm1QbjRKZURIN3h4WHlVSG1jTHlVLytqSFNaNHVrMUZ1eUsycnpvQzVGWjRlb2F6ZldiK3INCmNDS3puKzdHd24ybkNoTzZmdTRZRllkOTN0YytKN3VMekdnOXZEMUoxak5GSmhCajRoTWNQdFRYOE1tc1JOZ20NCmZiMHRGRFRPb3JneEdHejhSSlkxU25hV0RGZkVlcHJSTEgvTk9iWGVuSkh0SnhNbW13TTV4WVI2dHo2Rmd4elMNCndBY0IxVXlUSTF3YzFUaUJDdWVZazdCOXFxYTRjbjV2OU10Qk1ZcjkxbTFhTlVMcEpDV005WkxYNDBmcDVNR24NCld3QnE0Qm41RGhySEJSRk5tbTBXMS9odW5yN2FBTHdNOUNVZTZ0Vnh0ZXIwa0EvcmY4cFROa2J1VUxONjloWXYNCmxZUjQyRzVKZzdqQWxaclRqbGlIaHN3SmhoSVVpTm0vUEYwVkxOS2M4eWtnZldGbUdWUXpyYWMvMGdyRTBQOGUNCk0rZ3FHbWw0YTVhdVdQRTJjMGFoOWVjazJ1WmtXbXluYlVVcU80K05KMktxRUR2R3hSWFV5WDErb2pvUmU1KzQNCjZFMkx5S0pQbVNPNQ0KPS9vdkoNCi0tLS0tRU5EIFBHUCBNRVNTQUdFLS0tLS0NCg=="
}
},
{
"partId": "1",
"mimeType": "text/html",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "text/html; charset=\"UTF-8\""
},
{
"name": "Content-Transfer-Encoding",
"value": "quoted-printable"
}
],
"body": {
"size": 1132,
"data": "PGRpdiBkaXI9Imx0ciI-LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tPGJyPjxicj5oUUlNQTB0YUwvem1MWlVCQVEvL1RSV0xyNjlRQWdUODdhbkQyVVVpQzBJSTcwd0pTb29nV3dsbU1ac2N1TW9WPGJyPlFCSWRycTVQQ2JsdlBiZFNwWlNHYzBKSXdEMVBveXZMdm9TMDA1T1Y3b2k2YmJFWGlSZWFTZEhrRnBxdks2SzI8YnI-OTFST284RGY4S2pTOW1tTmRWUms5L1dSSE1XbEJVNDlzRWtJSG5yc3p2ZnJKUkxXbDN6UnBOdGI5OTdqcU14Njxicj44QWhXNWRvVTBpVVBRdHJ2WitIRGluZndiYnQ3aGVPdHlhZlRuaTlNakhlNDlNeWthWVdZaGJrYVRJMG1YditrPGJyPjY0OFJhbFFkaklDcExVckxjTUE1QlhrdGlEKzd5cEszc3QvczAyMEZuOCtmd2NFa3hnNVNQclRTRjg1Q2s3WmY8YnI-MjVWelF3dGpYWHJNTXIrUDMrVVVxM2ZJNWEyalpnaGRjWklWZVdVcEFZZDVzTWVIZHROSkxTMlJiaUx6K1JUKzxicj5SRlFMOVNFZHFNekQ0ZGw2dlBVZlZtK1Bic2VCaVdoWktRM1NkVTVWc2tQYVJ0OUZYZURVVUg4bG9pL1Znc1ZKPGJyPnpuOW9IQlJKQXdHLzVVWHlhQ0U1T1dLRTQ5ZXRzcWJSWW1ITW5GQ1RUSW81bWxmUWJpR1crbHdKRkFRNU5DcWk8YnI-WDYxcEhGc3ZTOHRObVBuNEplREg3eHhYeVVIbWNMeVUvK2pIU1o0dWsxRnV5SzJyem9DNUZaNGVvYXpmV2Ircjxicj5jQ0t6bis3R3duMm5DaE82ZnU0WUZZZDkzdGMrSjd1THpHZzl2RDFKMWpORkpoQmo0aE1jUHRUWDhNbXNSTmdtPGJyPmZiMHRGRFRPb3JneEdHejhSSlkxU25hV0RGZkVlcHJSTEgvTk9iWGVuSkh0SnhNbW13TTV4WVI2dHo2Rmd4elM8YnI-d0FjQjFVeVRJMXdjMVRpQkN1ZVlrN0I5cXFhNGNuNXY5TXRCTVlyOTFtMWFOVUxwSkNXTTlaTFg0MGZwNU1Hbjxicj5Xd0JxNEJuNURockhCUkZObW0wVzEvaHVucjdhQUx3TTlDVWU2dFZ4dGVyMGtBL3JmOHBUTmtidVVMTjY5aFl2PGJyPmxZUjQyRzVKZzdqQWxaclRqbGlIaHN3SmhoSVVpTm0vUEYwVkxOS2M4eWtnZldGbUdWUXpyYWMvMGdyRTBQOGU8YnI-TStncUdtbDRhNWF1V1BFMmMwYWg5ZWNrMnVaa1dteW5iVVVxTzQrTkoyS3FFRHZHeFJYVXlYMStvam9SZTUrNDxicj42RTJMeUtKUG1TTzU8YnI-PS9vdko8YnI-LS0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLTxicj48L2Rpdj4NCg=="
}
}
]
},
"sizeEstimate": 2880,
"historyId": "1415124",
"internalDate": "1688111051000"
},
"attachments": {},
"raw": {
"id": "1890b42720e9f5f5",
"threadId": "1890b41e36078a4a",
"labelIds": [
"IMPORTANT",
"Label_15",
"SENT",
"INBOX"
],
"snippet": "-----BEGIN PGP MESSAGE----- hQIMA0taL/zmLZUBAQ//TRWLr69QAgT87anD2UUiC0II70wJSoogWwlmMZscuMoV QBIdrq5PCblvPbdSpZSGc0JIwD1PoyvLvoS005OV7oi6bbEXiReaSdHkFpqvK6K2 91ROo8Df8KjS9mmNdVRk9/",
"sizeEstimate": 2880,
"raw": "TUlNRS1WZXJzaW9uOiAxLjANCkRhdGU6IEZyaSwgMzAgSnVuIDIwMjMgMTU6NDQ6MTEgKzA4MDANCk1lc3NhZ2UtSUQ6IDxDQUtidUxUb3RQeldCN3phWTUzX2dOQ1UzcktaN3F0THFQRFhpdWtNNk90cTNXdnhuNndAbWFpbC5nbWFpbC5jb20-DQpTdWJqZWN0OiBmbG93Y3J5cHQtYnJvd3NlciAjNTI0OCBlbmNyeXB0ZWQNCkZyb206IEZsb3dDcnlwdCBDb21wYXRpYmlsaXR5IDxmbG93Y3J5cHQuY29tcGF0aWJpbGl0eUBnbWFpbC5jb20-DQpUbzogRmxvd0NyeXB0IENvbXBhdGliaWxpdHkgPGZsb3djcnlwdC5jb21wYXRpYmlsaXR5QGdtYWlsLmNvbT4NCkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlOyBib3VuZGFyeT0iMDAwMDAwMDAwMDAwOTRkODNkMDVmZjUzZmJmYiINCg0KLS0wMDAwMDAwMDAwMDA5NGQ4M2QwNWZmNTNmYmZiDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9IlVURi04Ig0KDQotLS0tLUJFR0lOIFBHUCBNRVNTQUdFLS0tLS0NCg0KaFFJTUEwdGFML3ptTFpVQkFRLy9UUldMcjY5UUFnVDg3YW5EMlVVaUMwSUk3MHdKU29vZ1d3bG1NWnNjdU1vVg0KUUJJZHJxNVBDYmx2UGJkU3BaU0djMEpJd0QxUG95dkx2b1MwMDVPVjdvaTZiYkVYaVJlYVNkSGtGcHF2SzZLMg0KOTFST284RGY4S2pTOW1tTmRWUms5L1dSSE1XbEJVNDlzRWtJSG5yc3p2ZnJKUkxXbDN6UnBOdGI5OTdqcU14Ng0KOEFoVzVkb1UwaVVQUXRydlorSERpbmZ3YmJ0N2hlT3R5YWZUbmk5TWpIZTQ5TXlrYVlXWWhia2FUSTBtWHYraw0KNjQ4UmFsUWRqSUNwTFVyTGNNQTVCWGt0aUQrN3lwSzNzdC9zMDIwRm44K2Z3Y0VreGc1U1ByVFNGODVDazdaZg0KMjVWelF3dGpYWHJNTXIrUDMrVVVxM2ZJNWEyalpnaGRjWklWZVdVcEFZZDVzTWVIZHROSkxTMlJiaUx6K1JUKw0KUkZRTDlTRWRxTXpENGRsNnZQVWZWbStQYnNlQmlXaFpLUTNTZFU1VnNrUGFSdDlGWGVEVVVIOGxvaS9WZ3NWSg0Kem45b0hCUkpBd0cvNVVYeWFDRTVPV0tFNDlldHNxYlJZbUhNbkZDVFRJbzVtbGZRYmlHVytsd0pGQVE1TkNxaQ0KWDYxcEhGc3ZTOHRObVBuNEplREg3eHhYeVVIbWNMeVUvK2pIU1o0dWsxRnV5SzJyem9DNUZaNGVvYXpmV2Ircg0KY0NLem4rN0d3bjJuQ2hPNmZ1NFlGWWQ5M3RjK0o3dUx6R2c5dkQxSjFqTkZKaEJqNGhNY1B0VFg4TW1zUk5nbQ0KZmIwdEZEVE9vcmd4R0d6OFJKWTFTbmFXREZmRWVwclJMSC9OT2JYZW5KSHRKeE1tbXdNNXhZUjZ0ejZGZ3h6Uw0Kd0FjQjFVeVRJMXdjMVRpQkN1ZVlrN0I5cXFhNGNuNXY5TXRCTVlyOTFtMWFOVUxwSkNXTTlaTFg0MGZwNU1Hbg0KV3dCcTRCbjVEaHJIQlJGTm1tMFcxL2h1bnI3YUFMd005Q1VlNnRWeHRlcjBrQS9yZjhwVE5rYnVVTE42OWhZdg0KbFlSNDJHNUpnN2pBbFpyVGpsaUhoc3dKaGhJVWlObS9QRjBWTE5LYzh5a2dmV0ZtR1ZRenJhYy8wZ3JFMFA4ZQ0KTStncUdtbDRhNWF1V1BFMmMwYWg5ZWNrMnVaa1dteW5iVVVxTzQrTkoyS3FFRHZHeFJYVXlYMStvam9SZTUrNA0KNkUyTHlLSlBtU081DQo9L292Sg0KLS0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQ0KDQotLTAwMDAwMDAwMDAwMDk0ZDgzZDA1ZmY1M2ZiZmINCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJVVEYtOCINCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCg0KPGRpdiBkaXI9M0QibHRyIj4tLS0tLUJFR0lOIFBHUCBNRVNTQUdFLS0tLS08YnI-PGJyPmhRSU1BMHRhTC96bUxaVUJBUS8vVFJXPQ0KTHI2OVFBZ1Q4N2FuRDJVVWlDMElJNzB3SlNvb2dXd2xtTVpzY3VNb1Y8YnI-UUJJZHJxNVBDYmx2UGJkU3BaU0djMEpJd0QxUG95PQ0Kdkx2b1MwMDVPVjdvaTZiYkVYaVJlYVNkSGtGcHF2SzZLMjxicj45MVJPbzhEZjhLalM5bW1OZFZSazkvV1JITVdsQlU0OXNFa0lIPQ0KbnJzenZmckpSTFdsM3pScE50Yjk5N2pxTXg2PGJyPjhBaFc1ZG9VMGlVUFF0cnZaK0hEaW5md2JidDdoZU90eWFmVG5pOU1qSGU0PQ0KOU15a2FZV1loYmthVEkwbVh2K2s8YnI-NjQ4UmFsUWRqSUNwTFVyTGNNQTVCWGt0aUQrN3lwSzNzdC9zMDIwRm44K2Z3Y0VreGc1PQ0KU1ByVFNGODVDazdaZjxicj4yNVZ6UXd0alhYck1NcitQMytVVXEzZkk1YTJqWmdoZGNaSVZlV1VwQVlkNXNNZUhkdE5KTFMyUmJpPQ0KTHorUlQrPGJyPlJGUUw5U0VkcU16RDRkbDZ2UFVmVm0rUGJzZUJpV2haS1EzU2RVNVZza1BhUnQ5RlhlRFVVSDhsb2kvVmdzVko8PQ0KYnI-em45b0hCUkpBd0cvNVVYeWFDRTVPV0tFNDlldHNxYlJZbUhNbkZDVFRJbzVtbGZRYmlHVytsd0pGQVE1TkNxaTxicj5YNjFwPQ0KSEZzdlM4dE5tUG40SmVESDd4eFh5VUhtY0x5VS8rakhTWjR1azFGdXlLMnJ6b0M1Rlo0ZW9hemZXYityPGJyPmNDS3puKzdHd24yPQ0KbkNoTzZmdTRZRllkOTN0YytKN3VMekdnOXZEMUoxak5GSmhCajRoTWNQdFRYOE1tc1JOZ208YnI-ZmIwdEZEVE9vcmd4R0d6OFJKPQ0KWTFTbmFXREZmRWVwclJMSC9OT2JYZW5KSHRKeE1tbXdNNXhZUjZ0ejZGZ3h6Uzxicj53QWNCMVV5VEkxd2MxVGlCQ3VlWWs3QjlxPQ0KcWE0Y241djlNdEJNWXI5MW0xYU5VTHBKQ1dNOVpMWDQwZnA1TUduPGJyPld3QnE0Qm41RGhySEJSRk5tbTBXMS9odW5yN2FBTHdNPQ0KOUNVZTZ0Vnh0ZXIwa0EvcmY4cFROa2J1VUxONjloWXY8YnI-bFlSNDJHNUpnN2pBbFpyVGpsaUhoc3dKaGhJVWlObS9QRjBWTE5LPQ0KYzh5a2dmV0ZtR1ZRenJhYy8wZ3JFMFA4ZTxicj5NK2dxR21sNGE1YXVXUEUyYzBhaDllY2sydVprV215bmJVVXFPNCtOSjJLcUVEPQ0Kdkd4UlhVeVgxK29qb1JlNSs0PGJyPjZFMkx5S0pQbVNPNTxicj49M0Qvb3ZKPGJyPi0tLS0tRU5EIFBHUCBNRVNTQUdFLS0tLS08PQ0KYnI-PC9kaXY-DQoNCi0tMDAwMDAwMDAwMDAwOTRkODNkMDVmZjUzZmJmYi0t",
"historyId": "1415124",
"internalDate": "1688111051000"
}
}