From 3b2ee3d9578338d0b6f40721d1493945376d1029 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 9 Jan 2014 11:34:23 +0000 Subject: PluginUpdater not to crash on broken PE images git-svn-id: http://svn.miranda-ng.org/main/trunk@7563 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/PluginUpdater/src/DlgUpdate.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/plugins/PluginUpdater/src/DlgUpdate.cpp b/plugins/PluginUpdater/src/DlgUpdate.cpp index 3682af171e..059dcaf552 100644 --- a/plugins/PluginUpdater/src/DlgUpdate.cpp +++ b/plugins/PluginUpdater/src/DlgUpdate.cpp @@ -475,10 +475,16 @@ static int ScanFolder(const TCHAR *tszFolder, size_t cbBaseLen, int level, const ptszUrl = item->m_name; char szMyHash[33]; - CalculateModuleHash(tszBuf, szMyHash); + __try { + CalculateModuleHash(tszBuf, szMyHash); + bHasNewVersion = opts.bForceRedownload ? true : strcmp(szMyHash, item->m_szHash) != 0; + } + __except(EXCEPTION_EXECUTE_HANDLER) { + ZeroMemory(szMyHash, 0); + bHasNewVersion = true; // smth went wrong, reload a file from scratch + } MyCRC = item->m_crc; - bHasNewVersion = opts.bForceRedownload ? true : strcmp(szMyHash, item->m_szHash) != 0; } else { // file was marked for deletion, add it to the list anyway bHasNewVersion = true; -- cgit v1.2.3