From 0f7bec509a0aa787ba8048cc341b781f2015e1e4 Mon Sep 17 00:00:00 2001 From: tomcw Date: Sun, 18 Feb 2024 21:03:32 +0000 Subject: [PATCH] Zip file support: avoid double-free if there's a problem with the zip file (eg. no valid image type) --- source/DiskImageHelper.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/DiskImageHelper.cpp b/source/DiskImageHelper.cpp index 630779cf..b11c8ea9 100644 --- a/source/DiskImageHelper.cpp +++ b/source/DiskImageHelper.cpp @@ -1731,10 +1731,12 @@ ImageError_e CImageHelperBase::CheckZipFile(LPCTSTR pszImageFilename, ImageInfo* SetImageInfo(pImageInfo, eFileZip, dwOffset, pImageType, dwSize); - pImageInfo2 = new ImageInfo(); // use this dummy one, as some members get overwritten during Detect() + pImageInfo2 = new ImageInfo(); // use this dummy one for remaining entries in zip archive, as some members get overwritten during Detect() } } + if (pImageInfo->pImageBuffer == pImageBuffer) // on error: avoid double-free when parent calls ImageClose() + pImageInfo->pImageBuffer = NULL; delete [] pImageBuffer; pImageBuffer = NULL; }