diff options
author | George Hazan <george.hazan@gmail.com> | 2014-01-09 11:34:23 +0000 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2014-01-09 11:34:23 +0000 |
commit | 3b2ee3d9578338d0b6f40721d1493945376d1029 (patch) | |
tree | 4f70f8b277c4dfb59a13ac2a1a8cf29e418286ff | |
parent | a7dd3e40942c6280a3d7a8ed53312073ed153b5d (diff) |
PluginUpdater not to crash on broken PE images
git-svn-id: http://svn.miranda-ng.org/main/trunk@7563 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r-- | plugins/PluginUpdater/src/DlgUpdate.cpp | 10 |
1 files 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;
|