Merge pull request #3206 from JosJuice/limit-filesystem-size-2
Limit size of loaded file systems
This commit is contained in:
commit
584ea8b320
|
@ -270,6 +270,18 @@ void CFileSystemGCWii::InitFileSystem()
|
||||||
if (!Root.IsDirectory())
|
if (!Root.IsDirectory())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// 12 bytes (the size of a file entry) times 10 * 1024 * 1024 is 120 MiB,
|
||||||
|
// more than total RAM in a Wii. No file system should use anywhere near that much.
|
||||||
|
static const u32 ARBITRARY_FILE_SYSTEM_SIZE_LIMIT = 10 * 1024 * 1024;
|
||||||
|
if (Root.m_FileSize > ARBITRARY_FILE_SYSTEM_SIZE_LIMIT)
|
||||||
|
{
|
||||||
|
// Without this check, Dolphin can crash by trying to allocate too much
|
||||||
|
// memory when loading the file systems of certain malformed disc images.
|
||||||
|
|
||||||
|
ERROR_LOG(DISCIO, "File system is abnormally large! Aborting loading");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_FileInfoVector.size())
|
if (m_FileInfoVector.size())
|
||||||
PanicAlert("Wtf?");
|
PanicAlert("Wtf?");
|
||||||
u64 NameTableOffset = FSTOffset;
|
u64 NameTableOffset = FSTOffset;
|
||||||
|
|
Loading…
Reference in New Issue