aboutsummaryrefslogtreecommitdiff
path: root/src/SFileAddFile.cpp
diff options
context:
space:
mode:
authorLadislav Zezula <zezula@volny.cz>2023-09-23 01:08:58 +0200
committerLadislav Zezula <zezula@volny.cz>2023-09-23 01:08:58 +0200
commitcb56fff1a5aa1fd3b69c92c38dd07aec4ae28dec (patch)
treee9655958d759e8b8b1aa2258d5c6f3d917b40845 /src/SFileAddFile.cpp
parent8debce7eab1cfb7a145d592d757b75e7cac83610 (diff)
StormLib will not make Warcraft III maps larger than 2GB
Diffstat (limited to 'src/SFileAddFile.cpp')
-rw-r--r--src/SFileAddFile.cpp8
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))
{