From 90352e2d5f5321464fc6180e2172b8ff0f1a02be Mon Sep 17 00:00:00 2001 From: "richgel99@gmail.com" Date: Mon, 14 Oct 2013 00:50:26 +0000 Subject: [PATCH] ok, tweaking the fclose leak fix on write failure so it occurs AFTER the src file is opened, to prevent the dest archive from expanding in case the src file is missing (should be harmless though) --- miniz.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/miniz.c b/miniz.c index e79544f..5c640ad 100644 --- a/miniz.c +++ b/miniz.c @@ -4439,10 +4439,7 @@ mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, if (!mz_zip_get_file_modified_time(pSrc_filename, &dos_time, &dos_date)) return MZ_FALSE; - - if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes + sizeof(local_dir_header))) - return MZ_FALSE; - + pSrc_file = MZ_FOPEN(pSrc_filename, "rb"); if (!pSrc_file) return MZ_FALSE; @@ -4459,6 +4456,11 @@ mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, if (uncomp_size <= 3) level = 0; + if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes + sizeof(local_dir_header))) + { + MZ_FCLOSE(pSrc_file); + return MZ_FALSE; + } local_dir_header_ofs += num_alignment_padding_bytes; if (pZip->m_file_offset_alignment) { MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); } cur_archive_file_ofs += num_alignment_padding_bytes + sizeof(local_dir_header);