mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-02-03 21:30:35 +00:00
Infinite memory usage with ExtractionTool on Microsoft Cabinet due to the next cabinet being labeled as itself #15
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @HeroponRikiBestest on GitHub (Nov 13, 2025).
Originally assigned to: @mnadareski on GitHub.
When attempting to read simple.cab (simple.cab.zip) from inside
BurnOutSharpTestingFiles/FileType/MSI/v4/antimicro-2.21-win32-fixedSDL.msi, ExtractionTool will use an infinite amount of memory until your OS crashes or it gets killed. This issue occurs becausef7fd2f6f65/SabreTools.Serialization/Readers/MicrosoftCabinet.cs (L151)reads header.CabinetNext as "simple.cab", which is itself. This means that, when extraction is attempted, the loop that reads the next cabinet atf7fd2f6f65/SabreTools.Serialization/Wrappers/MicrosoftCabinet.Extraction.cs (L69)loops forever because it is always the next cabinet, using more and more memory as it does so. I think the cabinet itself uses LZX compression anyways, so nothing would get extracted even if it succeeded, but the main concern is just that it gets stuck until it runs out of memory, since that means BOS will do the same thing.@mnadareski commented on GitHub (Nov 13, 2025):
First attempt to address:
f2f0d0f2e7Worth mentioning that technically compression does not need to be consistent on an entire cabinet set.
@mnadareski commented on GitHub (Nov 13, 2025):
As reported in Discord, this seems to have been fixed.