From 01a6a3d98e7433434d63834b0ede8cda5ade1d38 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Thu, 30 Aug 2018 14:37:05 -0600 Subject: [PATCH] avoid overflow in debug logging --- .../src/ViewControllers/DebugUI/DebugUIBackup.m | 6 ++++-- Signal/src/util/OWSBackupExportJob.m | 15 +++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Signal/src/ViewControllers/DebugUI/DebugUIBackup.m b/Signal/src/ViewControllers/DebugUI/DebugUIBackup.m index f1d57eb2d..ab13077e6 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUIBackup.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUIBackup.m @@ -134,7 +134,8 @@ NS_ASSUME_NONNULL_BEGIN NSData *_Nullable data = [NSKeyedArchiver archivedDataWithRootObject:interaction]; OWSAssertDebug(data); - interactionSizeTotal += data.length; + ows_add_overflow( + interactionSizeTotal, data.length, &interactionSizeTotal); }]; [transaction enumerateKeysAndObjectsInCollection:[TSAttachment collection] usingBlock:^(NSString *key, id object, BOOL *stop) { @@ -143,7 +144,8 @@ NS_ASSUME_NONNULL_BEGIN NSData *_Nullable data = [NSKeyedArchiver archivedDataWithRootObject:attachment]; OWSAssertDebug(data); - attachmentSizeTotal += data.length; + ows_add_overflow( + attachmentSizeTotal, data.length, &attachmentSizeTotal); }]; }]; diff --git a/Signal/src/util/OWSBackupExportJob.m b/Signal/src/util/OWSBackupExportJob.m index a541e1072..778851429 100644 --- a/Signal/src/util/OWSBackupExportJob.m +++ b/Signal/src/util/OWSBackupExportJob.m @@ -630,27 +630,30 @@ NS_ASSUME_NONNULL_BEGIN { unsigned long long databaseFileSize = 0; for (OWSBackupExportItem *item in self.unsavedDatabaseItems) { - databaseFileSize += [OWSFileSystem fileSizeOfPath:item.encryptedItem.filePath].unsignedLongLongValue; + unsigned long long fileSize = + [OWSFileSystem fileSizeOfPath:item.encryptedItem.filePath].unsignedLongLongValue; + ows_add_overflow(databaseFileSize, fileSize, &databaseFileSize); } OWSLogInfo(@"exporting %@: count: %zd, bytes: %llu.", @"database items", self.unsavedDatabaseItems.count, databaseFileSize); - totalFileSize += databaseFileSize; - totalFileCount += self.unsavedDatabaseItems.count; + ows_add_overflow(totalFileSize, databaseFileSize, &totalFileSize); + ows_add_overflow(totalFileCount, self.unsavedDatabaseItems.count, &totalFileCount); } { unsigned long long attachmentFileSize = 0; for (OWSAttachmentExport *attachmentExport in self.unsavedAttachmentExports) { - attachmentFileSize += + unsigned long long fileSize = [OWSFileSystem fileSizeOfPath:attachmentExport.attachmentFilePath].unsignedLongLongValue; + ows_add_overflow(attachmentFileSize, fileSize, &attachmentFileSize); } OWSLogInfo(@"exporting %@: count: %zd, bytes: %llu.", @"attachment items", self.unsavedAttachmentExports.count, attachmentFileSize); - totalFileSize += attachmentFileSize; - totalFileCount += self.unsavedAttachmentExports.count; + ows_add_overflow(totalFileSize, attachmentFileSize, &totalFileSize); + ows_add_overflow(totalFileCount, self.unsavedAttachmentExports.count, &totalFileSize); } OWSLogInfo(@"exporting %@: count: %zd, bytes: %llu.", @"all items", totalFileCount, totalFileSize);