diff options
author | Ladislav Zezula <ladislav.zezula@avg.com> | 2014-10-07 11:23:52 +0200 |
---|---|---|
committer | Ladislav Zezula <ladislav.zezula@avg.com> | 2014-10-07 11:23:52 +0200 |
commit | 2d3b3e11c032728a74dbc65a4a3941714b870a0f (patch) | |
tree | cdeed734ed6b3882e37df2ea87e34ec776607e75 /src/SBaseCommon.cpp | |
parent | 1aa906cf21accf9d82b39340c1a7b5b54a9440e1 (diff) |
+ Improved patching process so that it works for Starcraft II patches
+ Removed memory leaks in file search
Diffstat (limited to 'src/SBaseCommon.cpp')
-rw-r--r-- | src/SBaseCommon.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/SBaseCommon.cpp b/src/SBaseCommon.cpp index c8d4ba6..a3b2a38 100644 --- a/src/SBaseCommon.cpp +++ b/src/SBaseCommon.cpp @@ -1410,10 +1410,10 @@ void FreeFileHandle(TMPQFile *& hf) FreeFileHandle(hf->hfPatch); // Then free all buffers allocated in the file structure - if(hf->pPatchHeader != NULL) - STORM_FREE(hf->pPatchHeader); if(hf->pbFileData != NULL) STORM_FREE(hf->pbFileData); + if(hf->pPatchHeader != NULL) + STORM_FREE(hf->pPatchHeader); if(hf->pPatchInfo != NULL) STORM_FREE(hf->pPatchInfo); if(hf->SectorOffsets != NULL) @@ -1438,6 +1438,10 @@ void FreeArchiveHandle(TMPQArchive *& ha) if(ha->haPatch != NULL) FreeArchiveHandle(ha->haPatch); + // Free the patch prefix, if any + if(ha->pPatchPrefix != NULL) + STORM_FREE(ha->pPatchPrefix); + // Close the file stream FileStream_Close(ha->pStream); ha->pStream = NULL; @@ -1517,12 +1521,9 @@ bool IsPseudoFileName(const char * szFileName, DWORD * pdwFileIndex) bool IsValidMD5(LPBYTE pbMd5) { - BYTE BitSummary = 0; - - // The MD5 is considered invalid of it is zeroed - BitSummary |= pbMd5[0x00] | pbMd5[0x01] | pbMd5[0x02] | pbMd5[0x03] | pbMd5[0x04] | pbMd5[0x05] | pbMd5[0x06] | pbMd5[0x07]; - BitSummary |= pbMd5[0x08] | pbMd5[0x09] | pbMd5[0x0A] | pbMd5[0x0B] | pbMd5[0x0C] | pbMd5[0x0D] | pbMd5[0x0E] | pbMd5[0x0F]; - return (BitSummary != 0); + LPDWORD Md5 = (LPDWORD)pbMd5; + + return (Md5[0] | Md5[1] | Md5[2] | Md5[3]) ? true : false; } bool VerifyDataBlockHash(void * pvDataBlock, DWORD cbDataBlock, LPBYTE expected_md5) |