aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLadislav <Zezula>2014-06-13 23:05:24 +0200
committerLadislav <Zezula>2014-06-13 23:05:24 +0200
commit49032636debe483912a65062aee65c9c547b9939 (patch)
treecc16eb15f73ca5df75202f6a67ff446323b19f40 /src
parent18c9b7c44f21efb8bbc94414a10a2cc4374468d6 (diff)
+ Limited MPQ header search to 0x08000000 bytes
Diffstat (limited to 'src')
-rw-r--r--src/SFileOpenArchive.cpp7
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;