From 744822d59590b25e2a1d70d11e331965185fa0b7 Mon Sep 17 00:00:00 2001 From: Alex Kalinichenko Date: Thu, 26 Nov 2015 10:47:55 -0500 Subject: [PATCH 1/2] Add guards for the malloc calls in SSZipArchive.m file. --- SSZipArchive/SSZipArchive.m | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/SSZipArchive/SSZipArchive.m b/SSZipArchive/SSZipArchive.m index c4491d2..08348df 100755 --- a/SSZipArchive/SSZipArchive.m +++ b/SSZipArchive/SSZipArchive.m @@ -177,6 +177,11 @@ } char *filename = (char *)malloc(fileInfo.size_filename + 1); + if (filename == NULL) + { + return NO; + } + unzGetCurrentFileInfo(zip, &fileInfo, filename, fileInfo.size_filename + 1, NULL, 0, NULL, 0); filename[fileInfo.size_filename] = '\0'; @@ -596,9 +601,13 @@ } } - zipOpenNewFileInZip3(_zip, afileName, &zipInfo, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION, 0, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, [password UTF8String], 0); - void *buffer = malloc(CHUNK); + if (buffer == NULL) + { + return NO; + } + + zipOpenNewFileInZip3(_zip, afileName, &zipInfo, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION, 0, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, [password UTF8String], 0); unsigned int len = 0; while (!feof(input)) From 35fe9b6af48527cde0b5db52287474ed3a32d75f Mon Sep 17 00:00:00 2001 From: Alex Kalinichenko Date: Thu, 26 Nov 2015 11:11:01 -0500 Subject: [PATCH 2/2] Add guards for the malloc calls in zip.c file. --- SSZipArchive/minizip/zip.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/SSZipArchive/minizip/zip.c b/SSZipArchive/minizip/zip.c index 3a3b16b..b88bd88 100755 --- a/SSZipArchive/minizip/zip.c +++ b/SSZipArchive/minizip/zip.c @@ -828,6 +828,8 @@ extern zipFile ZEXPORT zipOpen4(const void *pathname, int append, ZPOS64_T disk_ size_central_dir_to_read = size_central_dir; buf_size = SIZEDATA_INDATABLOCK; buf_read = (void *)ALLOC(buf_size); + if (buf_read == NULL) + err = ZIP_INTERNALERROR; if (ZSEEK64(ziinit.z_filefunc, ziinit.filestream, offset_central_dir + byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) @@ -1031,6 +1033,9 @@ extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char *filename, c zi->ci.size_centralextrafree += 11; /* Extra space reserved for AES extra info */ #endif zi->ci.central_header = (char *)ALLOC((uInt)zi->ci.size_centralheader + zi->ci.size_centralextrafree + size_comment); + if (zi->ci.central_header == NULL) + return ZIP_INTERNALERROR; + zi->ci.number_disk = zi->number_disk; /* Write central directory header */