aboutsummaryrefslogtreecommitdiff
path: root/src/SFileVerify.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/SFileVerify.cpp')
-rw-r--r--src/SFileVerify.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/SFileVerify.cpp b/src/SFileVerify.cpp
index 4465562..4c8c181 100644
--- a/src/SFileVerify.cpp
+++ b/src/SFileVerify.cpp
@@ -731,6 +731,10 @@ bool QueryMpqSignatureInfo(
// Make sure it's all zeroed
memset(pSI, 0, sizeof(MPQ_SIGNATURE_INFO));
+ // Flush the archive, if it was modified
+ if(ha->dwFlags & MPQ_FLAG_CHANGED)
+ SFileFlushArchive((HANDLE)(ha));
+
// Calculate the range of the MPQ
CalculateArchiveRange(ha, pSI);
@@ -822,7 +826,7 @@ DWORD SSignFileCreate(TMPQArchive * ha)
DWORD SSignFileFinish(TMPQArchive * ha)
{
- MPQ_SIGNATURE_INFO si;
+ MPQ_SIGNATURE_INFO si = {0};
unsigned long signature_len = MPQ_WEAK_SIGNATURE_SIZE;
BYTE WeakSignature[MPQ_SIGNATURE_FILE_SIZE];
BYTE Md5Digest[MD5_DIGEST_SIZE];
@@ -834,7 +838,6 @@ DWORD SSignFileFinish(TMPQArchive * ha)
assert(ha->dwFileFlags3 == MPQ_FILE_EXISTS);
// Query the weak signature info
- memset(&si, 0, sizeof(MPQ_SIGNATURE_INFO));
if(!QueryMpqSignatureInfo(ha, &si))
return ERROR_FILE_CORRUPT;
@@ -978,19 +981,14 @@ DWORD WINAPI SFileVerifyRawData(HANDLE hMpq, DWORD dwWhatToVerify, const char *
// Verifies the archive against the signature
DWORD WINAPI SFileVerifyArchive(HANDLE hMpq)
{
- MPQ_SIGNATURE_INFO si;
+ MPQ_SIGNATURE_INFO si = {0};
TMPQArchive * ha = (TMPQArchive *)hMpq;
// Verify input parameters
if(!IsValidMpqHandle(hMpq))
return ERROR_VERIFY_FAILED;
- // If the archive was modified, we need to flush it
- if(ha->dwFlags & MPQ_FLAG_CHANGED)
- SFileFlushArchive(hMpq);
-
// Get the MPQ signature and signature type
- memset(&si, 0, sizeof(MPQ_SIGNATURE_INFO));
if(!QueryMpqSignatureInfo(ha, &si))
return ERROR_VERIFY_FAILED;