From 68376d757a2a1a3baacff7d4660458260acc1d21 Mon Sep 17 00:00:00 2001 From: Jacob Ledbetter Date: Mon, 24 Aug 2026 17:46:01 -0600 Subject: [PATCH 1/2] fix(archive): Delay StdBIGFile allocation until after archive validation Co-authored-by: Cursor --- .../Source/StdDevice/Common/StdBIGFileSystem.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp b/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp index ffd0150f4c5..fc75c13ef86 100644 --- a/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp +++ b/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp @@ -86,8 +86,6 @@ ArchiveFile * StdBIGFileSystem::openArchiveFile(const Char *filename) { Int archiveFileSize = 0; Int numLittleFiles = 0; - ArchiveFile *archiveFile = NEW StdBIGFile(filename, AsciiString::TheEmptyString); - DEBUG_LOG(("StdBIGFileSystem::openArchiveFile - opening BIG file %s", filename)); if (fp == nullptr) { @@ -129,6 +127,8 @@ ArchiveFile * StdBIGFileSystem::openArchiveFile(const Char *filename) { fp->seek(0x10, File::START); // read in each directory listing. ArchivedFileInfo *fileInfo = NEW ArchivedFileInfo; + // TheSuperHackers @fix CryoTheRenegade 24/08/2026 Allocate after validation so failed opens and invalid BIG identifiers cannot leak the archive object. + ArchiveFile *archiveFile = NEW StdBIGFile(filename, AsciiString::TheEmptyString); for (Int i = 0; i < numLittleFiles; ++i) { Int filesize = 0; From 3b751138f911c965d4e114d2f8f96c6b501c63ff Mon Sep 17 00:00:00 2001 From: Jacob Ledbetter Date: Tue, 25 Aug 2026 14:23:40 -0600 Subject: [PATCH 2/2] fix(archive): Remove delayed-allocation comment Co-authored-by: Cursor --- .../Source/StdDevice/Common/StdBIGFileSystem.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp b/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp index fc75c13ef86..866f95ffef5 100644 --- a/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp +++ b/Core/GameEngineDevice/Source/StdDevice/Common/StdBIGFileSystem.cpp @@ -127,7 +127,6 @@ ArchiveFile * StdBIGFileSystem::openArchiveFile(const Char *filename) { fp->seek(0x10, File::START); // read in each directory listing. ArchivedFileInfo *fileInfo = NEW ArchivedFileInfo; - // TheSuperHackers @fix CryoTheRenegade 24/08/2026 Allocate after validation so failed opens and invalid BIG identifiers cannot leak the archive object. ArchiveFile *archiveFile = NEW StdBIGFile(filename, AsciiString::TheEmptyString); for (Int i = 0; i < numLittleFiles; ++i) {