mirror of
https://github.com/storytold/wordcraft.git
synced 2026-11-08 03:32:19 +00:00
The #3642 guard refused a file whose DIFAT lists more FAT sectors than its sectors need: one FAT sector per sector_len / 4 sectors plus one spare. Real writers reserve FAT for growth, so a real encrypted package — a compound file of 78 sectors — lists 4 FAT sectors and was refused: encrypted .docx files stopped opening with "the DIFAT lists 4 FAT sectors in a file of 78 sectors" (#5109, broken since the guard landed). Every FAT sector listed is a sector of the file, and none of them twice (checked next), so a real file lists no more FAT sectors than the file has. The refusal bound is now that: more than num_sectors is either duplicates or names cfb refuses anyway, and the FAT cfb builds (one sector of entries per listed name) stays within about the file's own size — the #3642 blowup listed 2048 × 127 names in a ~1 MB file and is still refused (260,096 > 2,048). Co-authored-by: Bra1nZ <bra1nz@astraoffice.com>