diff options
author | Ladislav <Zezula> | 2014-06-13 23:05:24 +0200 |
---|---|---|
committer | Ladislav <Zezula> | 2014-06-13 23:05:24 +0200 |
commit | 49032636debe483912a65062aee65c9c547b9939 (patch) | |
tree | cc16eb15f73ca5df75202f6a67ff446323b19f40 /src | |
parent | 18c9b7c44f21efb8bbc94414a10a2cc4374468d6 (diff) |
+ Limited MPQ header search to 0x08000000 bytes
Diffstat (limited to 'src')
-rw-r--r-- | src/SFileOpenArchive.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/SFileOpenArchive.cpp b/src/SFileOpenArchive.cpp index 0ca51c0..719aefe 100644 --- a/src/SFileOpenArchive.cpp +++ b/src/SFileOpenArchive.cpp @@ -199,6 +199,7 @@ bool WINAPI SFileOpenArchive( if(nError == ERROR_SUCCESS) { ULONGLONG SearchOffset = 0; + ULONGLONG EndOfSearch = FileSize; DWORD dwStreamFlags = 0; DWORD dwHeaderSize; DWORD dwHeaderID; @@ -215,9 +216,13 @@ bool WINAPI SFileOpenArchive( // Also remember if we shall check sector CRCs when reading file if(dwFlags & MPQ_OPEN_CHECK_SECTOR_CRC) ha->dwFlags |= MPQ_FLAG_CHECK_SECTOR_CRC; + + // Limit the header searching to about 130 MB of data + if(EndOfSearch > 0x08000000) + EndOfSearch = 0x08000000; // Find the offset of MPQ header within the file - while(SearchOffset < FileSize) + while(SearchOffset < EndOfSearch) { DWORD dwBytesAvailable = MPQ_HEADER_SIZE_V4; |