diff options
-rw-r--r-- | src/FileStream.cpp | 2 | ||||
-rwxr-xr-x | test/StormTest.cpp | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/src/FileStream.cpp b/src/FileStream.cpp index bc5618e..b66098c 100644 --- a/src/FileStream.cpp +++ b/src/FileStream.cpp @@ -1198,7 +1198,7 @@ static bool FlatStream_LoadBitmap(TBlockStream * pStream) BSWAP_ARRAY32_UNSIGNED((LPDWORD)(&Footer), sizeof(FILE_BITMAP_FOOTER));
// Verify if there is actually a footer
- if(Footer.Signature == ID_FILE_BITMAP_FOOTER && Footer.Version == 0x03)
+ if(Footer.Signature == ID_FILE_BITMAP_FOOTER && Footer.Version == 0x03 && Footer.BlockSize != 0)
{
// Get the offset of the bitmap, number of blocks and size of the bitmap
ByteOffset = MAKE_OFFSET64(Footer.MapOffsetHi, Footer.MapOffsetLo);
diff --git a/test/StormTest.cpp b/test/StormTest.cpp index eeb0a24..84ed667 100755 --- a/test/StormTest.cpp +++ b/test/StormTest.cpp @@ -4008,6 +4008,7 @@ static const TEST_INFO1 Test_OpenMpqs[] = //{_T("pocs/MPQ_2024_04_HeapOverflow.mpq"), NULL, "--------------------------------", TFLG_WILL_FAIL},
//{_T("pocs/MPQ_2024_05_HeapOverflow.mpq"), NULL, "0539ae020719654a0ea6e2627a8195f8", 14},
{_T("pocs/MPQ_2024_06_HeapOverflowReadFile.mpq"), NULL, "d41d8cd98f00b204e9800998ecf8427e", 1},
+ {_T("pocs/MPQ_2024_07_InvalidBitmapFooter.mpq"), NULL, "--------------------------------", TFLG_WILL_FAIL},
// Correct or damaged archives
{_T("MPQ_1997_v1_Diablo1_DIABDAT.MPQ"), NULL, "554b538541e42170ed41cb236483489e", 2910, &TwoFilesD1}, // Base MPQ from Diablo 1
|