fix: gpt_read checks every entry, and says when there are more than max (#180)
gpt_read() stopped at max used entries (16 for the identity code, 4 in the mint): a disk whose StarshipOS partitions came after the first max read as having none, and the entries after max were never range-checked. Now every entry is checked and every used one counted; a good table with more used entries than max is GPT_MANY (the first max in parts), and the identity code says "GPT: a USB drive has more than 16 partitions -- not used". Other callers treat anything but GPT_OK as before. Tested first, seen to fail: qemu_session.py gpt_many -- a data stick with its two partitions as entries 17 and 18 after 16 others, and the same with an entry 19 past the usable range: both "not this system's stick" before (silently cut, entry 19 never checked; logs/20261112-162236). After: "more than 16 partitions" and "a damaged partition table" (logs/20261112-162921). Regressions: gpt_bad_entries, gpt_foreign PASS. gpt_zuse FAILS, on a stale expectation unrelated to this change -- an identity-only GPT drive with no system stick has been held silently as a possible real Zuse since #92 Task 4; its log is kept here. The gpt_many images are made before the boot: a first version made them after, failed in sgdisk and left its QEMU running, stopped by hand (logs/20261112-162003). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RzZgrf7V7Zk2iczBXDRbm
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user