diff options
author | Ladislav Zezula <zezula@volny.cz> | 2023-09-23 01:08:58 +0200 |
---|---|---|
committer | Ladislav Zezula <zezula@volny.cz> | 2023-09-23 01:08:58 +0200 |
commit | cb56fff1a5aa1fd3b69c92c38dd07aec4ae28dec (patch) | |
tree | e9655958d759e8b8b1aa2258d5c6f3d917b40845 /src/SFileAddFile.cpp | |
parent | 8debce7eab1cfb7a145d592d757b75e7cac83610 (diff) |
StormLib will not make Warcraft III maps larger than 2GB
Diffstat (limited to 'src/SFileAddFile.cpp')
-rw-r--r-- | src/SFileAddFile.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/SFileAddFile.cpp b/src/SFileAddFile.cpp index 5913424..2d14dda 100644 --- a/src/SFileAddFile.cpp +++ b/src/SFileAddFile.cpp @@ -246,6 +246,14 @@ static DWORD WriteDataToMpqFile( BSWAP_ARRAY32_UNSIGNED(pbToWrite, dwBytesInSector);
}
+ // Do not allow Warcraft III maps to go over 2GB.
+ // https://github.com/ladislav-zezula/StormLib/issues/306
+ if((ha->dwFlags & MPQ_FLAG_WAR3_MAP) && (ByteOffset + dwBytesInSector) > 0x7FFFFFFF)
+ {
+ dwErrCode = ERROR_DISK_FULL;
+ break;
+ }
+
// Write the file sector
if(!FileStream_Write(ha->pStream, &ByteOffset, pbToWrite, dwBytesInSector))
{
|