diff options
-rw-r--r-- | src/SBaseCommon.cpp | 6 | ||||
-rw-r--r-- | src/SFileGetFileInfo.cpp | 4 | ||||
-rwxr-xr-x | test/StormTest.cpp | 31 | ||||
-rw-r--r-- | test/stormlib-test-001-linux.txt | 138 | ||||
-rw-r--r-- | test/stormlib-test-001.txt | 6 |
5 files changed, 16 insertions, 169 deletions
diff --git a/src/SBaseCommon.cpp b/src/SBaseCommon.cpp index 77590d6..b0029e0 100644 --- a/src/SBaseCommon.cpp +++ b/src/SBaseCommon.cpp @@ -999,18 +999,20 @@ void * LoadMpqTable( LPBYTE pbCompressed = NULL;
LPBYTE pbMpqTable;
LPBYTE pbToRead;
- DWORD dwBytesToRead = dwCompressedSize;
+ DWORD dwBytesToRead = dwTableSize;
DWORD dwErrCode = ERROR_SUCCESS;
// Allocate the MPQ table
pbMpqTable = pbToRead = STORM_ALLOC(BYTE, dwTableSize);
if(pbMpqTable != NULL)
{
- // Check if the MPQ table is encrypted
+ // Check if the MPQ table is compressed
if(dwCompressedSize < dwTableSize)
{
// Allocate temporary buffer for holding compressed data
pbCompressed = pbToRead = STORM_ALLOC(BYTE, dwCompressedSize);
+ dwBytesToRead = dwCompressedSize;
+
if(pbCompressed == NULL)
{
STORM_FREE(pbMpqTable);
diff --git a/src/SFileGetFileInfo.cpp b/src/SFileGetFileInfo.cpp index f9b9a76..2a4d7b3 100644 --- a/src/SFileGetFileInfo.cpp +++ b/src/SFileGetFileInfo.cpp @@ -564,11 +564,11 @@ static DWORD CreatePseudoFileName(HANDLE hFile, TFileEntry * pFileEntry, char * bool WINAPI SFileGetFileName(HANDLE hFile, char * szFileName)
{
- TMPQFile * hf = (TMPQFile *)hFile; // MPQ File handle
+ TMPQFile * hf;
DWORD dwErrCode = ERROR_INVALID_HANDLE;
// Check valid parameters
- if(IsValidFileHandle(hFile))
+ if((hf = IsValidFileHandle(hFile)) != NULL)
{
TFileEntry * pFileEntry = hf->pFileEntry;
diff --git a/test/StormTest.cpp b/test/StormTest.cpp index 7574efb..2bd5ceb 100755 --- a/test/StormTest.cpp +++ b/test/StormTest.cpp @@ -3870,30 +3870,11 @@ static DWORD TestReplaceFile(LPCTSTR szMpqPlainName, LPCTSTR szFilePlainName, LP return dwErrCode;
}
-static DWORD Test_PlayingSpace()
+static void Test_PlayingSpace()
{
- BYTE PlainText1[0x1000];
- BYTE Compressed[0x1000];
- BYTE PlainText2[0x1000];
- int cbCompressed;
- int cbOutBuffer;
-
- // Prepare buffer that is hard to compress
- memset(PlainText1, 0x01, sizeof(PlainText1));
-
- // Compress the data
- cbOutBuffer = sizeof(Compressed);
- SCompCompress(Compressed, &cbOutBuffer, PlainText1, sizeof(PlainText1), MPQ_COMPRESSION_HUFFMANN | MPQ_COMPRESSION_ZLIB, 0, 0);
- cbCompressed = cbOutBuffer;
-
- // Decompress the data
- cbOutBuffer = sizeof(PlainText2);
- SCompDecompress(PlainText2, &cbOutBuffer, Compressed, cbCompressed);
- return ERROR_SUCCESS;
-
/*
// Check opening of a MPQ
- LPCTSTR szArchiveName = _T("e:\\Volcanis.scm");
+ LPCTSTR szArchiveName = _T("e:\\GreenTD.w3x");
LPBYTE pbBuffer = NULL;
HANDLE hFile = NULL;
HANDLE hMpq = NULL;
@@ -3901,7 +3882,7 @@ static DWORD Test_PlayingSpace() if(SFileOpenArchive(szArchiveName, 0, 0, &hMpq))
{
- if(SFileOpenFileEx(hMpq, "staredit\\scenario.chk", 0, &hFile))
+ if(SFileOpenFileEx(hMpq, "File00000160.xxx", 0, &hFile))
{
if((dwFileSize = SFileGetFileSize(hFile, NULL)) != NULL)
{
@@ -3910,7 +3891,6 @@ static DWORD Test_PlayingSpace() DWORD dwBytesRead = 0;
SFileReadFile(hFile, pbBuffer, dwFileSize, &dwBytesRead, NULL);
- assert(dwBytesRead == dwFileSize);
STORM_FREE(pbBuffer);
}
}
@@ -4109,7 +4089,6 @@ static const TEST_INFO TestList_MasterMirror[] = static const TEST_INFO Test_OpenMpqs[] =
{
-
// Correct or damaged archives
{_T("MPQ_1997_v1_Diablo1_DIABDAT.MPQ"), NULL, "554b538541e42170ed41cb236483489e", 2910, &TwoFilesD1}, // Base MPQ from Diablo 1
{_T("MPQ_1997_v1_patch_rt_SC1B.mpq"), NULL, "43fe7d362955be68a708486e399576a7", 10}, // From Starcraft 1 BETA
@@ -4134,6 +4113,8 @@ static const TEST_INFO Test_OpenMpqs[] = {_T("MPQ_2023_v1_StarcraftMap.scm"), NULL, "7830c51700697dd3c175f086a3157b29", 4}, // StarCraft map from StarCraft: Brood War 1.16
{_T("MPQ_2023_v1_BroodWarMap.scx"), NULL, "dd3afa3c2f5e562ce3ca91c0c605a71f", 3}, // Brood War map from StarCraft: Brood War 1.16
{_T("MPQ_2023_v1_Volcanis.scm"), NULL, "522c89ca96d6736427b01f7c80dd626f", 3}, // Map modified with unusual file compression: ZLIB+Huffman
+ {_T("MPQ_2023_v4_UTF8.s2ma"), NULL, "97b7a686650f3307d135e1d1b017a36a", 67}, // Map contaning files with Chinese names (UTF8-encoded)
+ {_T("MPQ_2023_v1_GreenTD.w3x"), NULL, "477af4ddf11eead1412d7c87cb81b530", 2004}, // Corrupt sector checksum table in file #A0
// Protected archives
{_T("MPQ_2002_v1_ProtectedMap_InvalidUserData.w3x"), NULL, "b900364cc134a51ddeca21a13697c3ca", 79},
@@ -4250,7 +4231,7 @@ static const TEST_INFO Test_ReplaceFile[] = //-----------------------------------------------------------------------------
// Main
-#define TEST_COMMAND_LINE
+//#define TEST_COMMAND_LINE
#define TEST_LOCAL_LISTFILE
#define TEST_STREAM_OPERATIONS
#define TEST_MASTER_MIRROR
diff --git a/test/stormlib-test-001-linux.txt b/test/stormlib-test-001-linux.txt deleted file mode 100644 index 97ffef9..0000000 --- a/test/stormlib-test-001-linux.txt +++ /dev/null @@ -1,138 +0,0 @@ -==== Test Suite for StormLib version 9.25 ==== -InitWorkFolder: Work directory /media/ladik/MPQs (default) -TestLiFiSearch (FLAT-MAP:ListFile_Blizzard.txt) succeeded. -TestLiFiSearch (ListFile_Blizzard.txt) succeeded. -TestFileStream (MPQ_2013_v4_alternate-original.MPQ) succeeded. -TestFileStream (MPQ_2013_v4_alternate-original.MPQ) succeeded. -TestFileStream (MPQ_2013_v4_alternate-complete.MPQ) succeeded. -TestFileStream (part-file://MPQ_2009_v2_WoW_patch.MPQ.part) succeeded. -TestFileStream (blk4-file://streaming/model.MPQ.0) succeeded. -TestFileStream (mpqe-file://MPQ_2011_v2_EncryptedMpq.MPQE) succeeded. -TestFileMirror (part-file://MPQ_2009_v1_patch-created.MPQ.part) succeeded. -TestFileMirror (part-file://MPQ_2009_v1_patch-partial.MPQ.part) succeeded. -TestFileMirror (part-file://MPQ_2009_v1_patch-complete.MPQ.part) succeeded. -TestFileMirror (MPQ_2013_v4_alternate-created.MPQ) succeeded. -TestFileMirror (MPQ_2013_v4_alternate-incomplete.MPQ) succeeded. -TestFileMirror (MPQ_2013_v4_alternate-complete.MPQ) succeeded. -TestReadingMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. -TestReadingMpq (MPQ_1997_v1_patch_rt_SC1B.mpq) succeeded. -TestReadingMpq (MPQ_1997_v1_StarDat_SC1B.mpq) succeeded. -TestReadingMpq (MPQ_1997_v1_INSTALL_SC1B.EXE_) succeeded. -TestReadingMpq: Warning: CRC32 error on (signature) -TestReadingMpq: Warning: CRC32 error on (signature) -TestReadingMpq (MPQ_2016_v1_D2XP_IX86_1xx_114a.mpq) succeeded. -TestReadingMpq (MPQ_2018_v1_icon_error.w3m) succeeded. -TestReadingMpq (MPQ_1997_v1_Diablo1_STANDARD.SNP) succeeded. -TestReadingMpq (MPQ_2012_v2_EmptyMpq.MPQ) succeeded. -TestReadingMpq (MPQ_2013_v4_EmptyMpq.MPQ) succeeded. -TestReadingMpq (MPQ_2013_v4_patch-base-16357.MPQ) succeeded. -TestReadingMpq (MPQ_2011_v4_InvalidHetEntryCount.MPQ) succeeded. -TestReadingMpq (MPQ_2002_v1_BlockTableCut.MPQ) succeeded. -TestReadingMpq (MPQ_2010_v2_HasUserData.s2ma) succeeded. -TestReadingMpq: Warning: CRC32 error on (listfile) -TestReadingMpq: Warning: CRC32 error on (listfile) -TestReadingMpq: Warning: CRC32 error on File00000003.xxx -TestReadingMpq (MPQ_2014_v1_AttributesOneEntryLess.w3x) succeeded. -TestReadingMpq (MPQ_2020_v1_AHF04patch.mix) succeeded. -TestReadingMpq (MPQ_2010_v3_expansion-locale-frFR.MPQ) succeeded. -TestReadingMpq (mpqe-file://MPQ_2011_v2_EncryptedMpq.MPQE) succeeded. -TestReadingMpq (part-file://MPQ_2010_v2_HashTableCompressed.MPQ.part) succeeded. -TestReadingMpq (blk4-file://streaming/model.MPQ.0) succeeded. -TestReadingMpq: Warning: CRC32 error on replay.message.events -TestReadingMpq (MPQ_2023_v2_MemoryCorruption.SC2Replay) succeeded. -TestReadingMpq (MPQ_2023_v1_StarcraftMap.scm) succeeded. -TestReadingMpq (MPQ_2023_v1_BroodWarMap.scx) succeeded. -TestReadingMpq (MPQ_2023_v1_Volcanis.scm) succeeded. -TestReadingMpq (MPQ_2002_v1_ProtectedMap_InvalidUserData.w3x) succeeded. -TestReadingMpq (MPQ_2002_v1_ProtectedMap_InvalidMpqFormat.w3x) succeeded. -TestReadingMpq (MPQ_2002_v1_ProtectedMap_Spazzler.w3x) succeeded. -TestReadingMpq (MPQ_2014_v1_ProtectedMap_Spazzler2.w3x) succeeded. -TestReadingMpq (MPQ_2014_v1_ProtectedMap_Spazzler3.w3x) succeeded. -TestReadingMpq (MPQ_2002_v1_ProtectedMap_BOBA.w3m) succeeded. -TestReadingMpq (MPQ_2015_v1_ProtectedMap_KangTooJee.w3x) succeeded. -TestReadingMpq (MPQ_2015_v1_ProtectedMap_Somj2hM16.w3x) succeeded. -TestReadingMpq (MPQ_2015_v1_ProtectedMap_Spazy.w3x) succeeded. -TestReadingMpq (MPQ_2015_v1_MessListFile.mpq) succeeded. -TestReadingMpq (MPQ_2016_v1_ProtectedMap_TableSizeOverflow.w3x) succeeded. -TestReadingMpq (MPQ_2016_v1_ProtectedMap_HashOffsIsZero.w3x) succeeded. -TestReadingMpq (MPQ_2016_v1_ProtectedMap_Somj2.w3x) succeeded. -TestReadingMpq (MPQ_2016_v1_WME4_4.w3x) succeeded. -TestReadingMpq (MPQ_2016_v1_SP_(4)Adrenaline.w3x) succeeded. -TestReadingMpq (MPQ_2016_v1_ProtectedMap_1.4.w3x) succeeded. -TestReadingMpq (MPQ_2016_v1_KoreanFile.w3m) succeeded. -TestReadingMpq (MPQ_2017_v1_Eden_RPG_S2_2.5J.w3x) succeeded. -TestReadingMpq (MPQ_2017_v1_BigDummyFiles.w3x) succeeded. -TestReadingMpq (MPQ_2017_v1_TildeInFileName.mpq) succeeded. -TestReadingMpq (MPQ_2018_v1_EWIX_v8_7.w3x) succeeded. -TestReadingMpq (MPQ_2020_v4_FakeMpqHeaders.SC2Mod) succeeded. -TestReadingMpq (MPQ_2020_v4_NP_Protect_1.s2ma) succeeded. -TestReadingMpq (MPQ_2020_v4_NP_Protect_2.s2ma) succeeded. -TestReadingMpq (MPQ_2015_v1_flem1.w3x) succeeded. -TestReadingMpq (MPQ_2002_v1_ProtectedMap_HashTable_FakeValid.w3x) succeeded. -TestReadingMpq (MPQ_2021_v1_CantExtractCHK.scx) succeeded. -TestReadingMpq (MPQ_2022_v1_Sniper.scx) succeeded. -TestReadingMpq (MPQ_2022_v1_OcOc_Bound_2.scx) succeeded. -TestReadingMpq (MPQ_2020_v1_HS0.1.asi) succeeded. -TestReadingMpq (MPQ_2022_v1_hs0.8.asi) succeeded. -TestReadingMpq (MPQ_2022_v1_MoeMoeMod.asi) succeeded. -TestReadingMpq (MPx_2013_v1_LongwuOnline.mpk) succeeded. -TestReadingMpq (MPx_2013_v1_WarOfTheImmortals.sqp) succeeded. -TestReadingMpq (MPx_2022_v1_Music.mpk) succeeded. -TestReadingMpq (MPx_2022_v1_Scp.mpk) succeeded. -TestReadingMpq (MPx_2022_v1_UI.mpk) succeeded. -TestReadingMpq (MPQ_1998_v1_StarCraft.mpq) succeeded. -TestReadingMpq (MPQ_2012_v4_OldWorld.MPQ) succeeded. -TestReadingMpq (MPQ_2013_v4_world.MPQ) succeeded. -TestReadingMpq (MPQ_2013_v4_locale-enGB.MPQ) succeeded. -TestReadingMpq (MPQ_2013_v4_Base1.SC2Data) succeeded. -TestReadingMpq (MPQ_2013_v4_Mods#Core.SC2Mod#enGB.SC2Assets) succeeded. -TestReadingMpq (MPQ_2013_v4_Base1.SC2Data) succeeded. -TestReadingMpq (MPQ_2013_v4_Base3.SC2Maps) succeeded. -TestReadingMpq (MPQ_2013_v4_Mods#Liberty.SC2Mod#enGB.SC2Data) succeeded. -TestReadingMpq (MPQ_2014_v4_base-Win.MPQ) succeeded. -TestReadingMpq (MPQ_2014_v4_base-Win.MPQ) succeeded. -TestReadingMpq (MPQ_1997_v1_Diablo1_STANDARD.SNP) succeeded. -TestReadingMpq (MPQ_1999_v1_WeakSignature.exe) succeeded. -TestReadingMpq (MPQ_2003_v1_WeakSignatureEmpty.exe) succeeded. -TestReadingMpq (MPQ_2002_v1_StrongSignature.w3m) succeeded. -TestReadingMpq (MPQ_1998_v1_StarDat.mpq) succeeded. -TestReadingMpq (MPQ_1999_v1_WeakSignature.exe) succeeded. -TestReadingMpq (flat-file://streaming/model.MPQ.0) succeeded. -TestReadingMpq (MPQ_2013_vX_Battle.net.MPQ) succeeded. -TestReadingMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. -TestReadingMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. -TestReadingMpq (MPQ_2002_v1_StrongSignature.w3m) succeeded. -TestReadingMpq (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. -Test_ReopenMpq (MPQ_2010_v3_expansion-locale-frFR.MPQ) succeeded. -Test_ReopenMpq (MPQ_2016_v1_00000.pak) succeeded. -Test_ReopenMpq (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. -Test_ReopenMpq (MPQ_2013_v4_expansion1.MPQ) succeeded. -Test_ReopenMpq (MPQ_2014_v1_out1.w3x) succeeded. -Test_ReopenMpq (MPQ_2014_v1_out2.w3x) succeeded. -Test_ReopenMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. -Test_ReopenMpq (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. -Test_Signature (MPQ_1999_v1_WeakSigned1.mpq) succeeded. -Test_Signature (MPQ_1999_v1_WeakSigned1.mpq) succeeded. -TestModifyMpq (MPQ_2014_v4_Base.StormReplay) succeeded. -TestModifyMpq (MPQ_2022_v1_v4.329.w3x) succeeded. -TestModifyMpq (MPQ_2023_v1_StarcraftMap.scm) succeeded. -TestVerifyHash succeeded. -CreateEmptyMpq (StormLibTest_EmptyMpq_v2.mpq) succeeded. -CreateEmptyMpq (StormLibTest_EmptyMpq_v4.mpq) succeeded. -TestCreateGaps (StormLibTest_GapsTest.mpq) succeeded. -TestNonStdNames (StormLibTest_NonStdNames.mpq) succeeded. -CreateMpqEditor (StormLibTest_MpqEditorTest.mpq) succeeded. -TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. -TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. -TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. -TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. -IncMaxFileCount (StormLibTest_IncMaxFileCount.mpq) succeeded. -MpqUnicodeName succeeded. -TestFileFlag (StormLibTest_FileFlagTest.mpq) succeeded. -TestCompressions: Warning: CRC32 error on WaveFile_01.wav -TestCompressions: Warning: CRC32 error on WaveFile_02.wav -TestCompressions (StormLibTest_AddWaveMonoBadTest.mpq) succeeded. -TestCompressions: Warning: CRC32 error on WaveFile_01.wav -TestCompressions: Warning: CRC32 error on WaveFile_02.wav -ListFilePos (StormLibTest_ListFilePos.mpq) succeeded. -TestBigArchive (StormLibTest_BigArchive_v4.mpq) succeeded.
\ No newline at end of file diff --git a/test/stormlib-test-001.txt b/test/stormlib-test-001.txt index 06c218d..1f2be43 100644 --- a/test/stormlib-test-001.txt +++ b/test/stormlib-test-001.txt @@ -1,7 +1,7 @@ ==== Test Suite for StormLib version 9.25 ==== InitWorkFolder: Work directory \Multimedia\MPQs (default) -TestLiFiSearch (FLAT-MAP:ListFile_Blizzard.txt) succeeded. -TestLiFiSearch (ListFile_Blizzard.txt) succeeded. +TestLiFiSearch (FLAT-MAP:listfile-test.txt) succeeded. +TestLiFiSearch (listfile-test.txt) succeeded. TestFileStream (MPQ_2013_v4_alternate-original.MPQ) succeeded. TestFileStream (MPQ_2013_v4_alternate-original.MPQ) succeeded. TestFileStream (MPQ_2013_v4_alternate-complete.MPQ) succeeded. @@ -43,6 +43,8 @@ TestReadingMpq (MPQ_2023_v2_MemoryCorruption.SC2Replay) succeeded. TestReadingMpq (MPQ_2023_v1_StarcraftMap.scm) succeeded. TestReadingMpq (MPQ_2023_v1_BroodWarMap.scx) succeeded. TestReadingMpq (MPQ_2023_v1_Volcanis.scm) succeeded. +TestReadingMpq (MPQ_2023_v4_UTF8.s2ma) succeeded. +TestReadingMpq (MPQ_2023_v1_GreenTD.w3x) succeeded. TestReadingMpq (MPQ_2002_v1_ProtectedMap_InvalidUserData.w3x) succeeded. TestReadingMpq (MPQ_2002_v1_ProtectedMap_InvalidMpqFormat.w3x) succeeded. TestReadingMpq (MPQ_2002_v1_ProtectedMap_Spazzler.w3x) succeeded. |