Non-false-positive data errors on isCAB extraction #12

Closed
opened 2026-01-29 21:16:32 +00:00 by claunia · 1 comment
Owner

Originally created by @HeroponRikiBestest on GitHub (Oct 31, 2025).

It's been a while, but if I remember correctly, the comment at eae75c5943/SabreTools.Serialization/Wrappers/InstallShieldCabinet.Extraction.cs (L342) about "// If we didn't get a positive result that's not a data error (false positives)" ignores zlib data errors due to the issues they were causing. For tombraideranniversary_1.0_d2d.zip, extracting the installshield cabinets inside results in a data error when extracting bigfile.017 from the installshield cabinets, and it's genuine, as it results in a hash mismatch that unshield doesn't have about halfway through the file, rendering the back half incorrect. The incorrect block wounds up being written after the byte at offset 79429631 in bigfile.017. It happens in the loop where totalWritten is 79495168 and writeBytesLeft is 77658112.

I know that there's minimal desire to have to dive back into this, which I understand; I'm only opening an issue because I noticed the problem, will forget in the future, and figure it's good to have a documented real issue for if the future comes.

Originally created by @HeroponRikiBestest on GitHub (Oct 31, 2025). It's been a while, but if I remember correctly, the comment at https://github.com/SabreTools/SabreTools.Serialization/blob/eae75c5943e9f3129514ae58abf3704f78b1ac2b/SabreTools.Serialization/Wrappers/InstallShieldCabinet.Extraction.cs#L342 about "// If we didn't get a positive result that's not a data error (false positives)" ignores zlib data errors due to the issues they were causing. For tombraideranniversary_1.0_d2d.zip, extracting the installshield cabinets inside results in a data error when extracting bigfile.017 from the installshield cabinets, and it's genuine, as it results in a hash mismatch that unshield doesn't have about halfway through the file, rendering the back half incorrect. The incorrect block wounds up being written after the byte at offset 79429631 in bigfile.017. It happens in the loop where totalWritten is 79495168 and writeBytesLeft is 77658112. I know that there's minimal desire to have to dive back into this, which I understand; I'm only opening an issue because I noticed the problem, will forget in the future, and figure it's good to have a documented real issue for if the future comes.
Author
Owner

@HeroponRikiBestest commented on GitHub (Nov 15, 2025):

Seems to be fixed as of 425d13a2ac

@HeroponRikiBestest commented on GitHub (Nov 15, 2025): Seems to be fixed as of https://github.com/SabreTools/SabreTools.Serialization/commit/425d13a2ac7db5939192649a113a7f19e8fa9cf7
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SabreTools/SabreTools.Serialization#12