Ensure outgoing filesize limit considers padding and encryption

Co-authored-by: trevor-signal <131492920+trevor-signal@users.noreply.github.com>
This commit is contained in:
automated-signal 2024-08-12 15:17:10 -05:00 committed by GitHub
parent 49d7e0e0cc
commit 55df2d2090
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -21,6 +21,7 @@ import { handleVideoAttachment } from './handleVideoAttachment';
import { isHeic, stringToMIMEType } from '../types/MIME';
import { ToastType } from '../types/Toast';
import { isImageTypeSupported, isVideoTypeSupported } from './GoogleChrome';
import { getAttachmentCiphertextLength } from '../AttachmentCrypto';
export async function processAttachment(
file: File,
@ -79,10 +80,11 @@ export async function processAttachment(
function isAttachmentSizeOkay(attachment: Readonly<AttachmentType>): boolean {
const limitKb = getMaximumOutgoingAttachmentSizeInKb(getRemoteConfigValue);
// this needs to be cast properly
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
if ((attachment.data.byteLength / KIBIBYTE).toFixed(4) >= limitKb) {
const limitBytes =
getMaximumOutgoingAttachmentSizeInKb(getRemoteConfigValue) * KIBIBYTE;
const paddedAndEncryptedSize = getAttachmentCiphertextLength(attachment.size);
if (paddedAndEncryptedSize > limitBytes) {
window.reduxActions.toast.showToast({
toastType: ToastType.FileSize,
parameters: getRenderDetailsForLimit(limitKb),