ZIP - Unknown Extra Field ID
An extra field with header ID 0x9901, which is assigned to nothing, sits alongside a recognised extended-timestamp field in a different order in each header. The extra-field area is a length-prefixed chain, so the only correct behaviour is to skip unknown IDs by their declared length and keep walking.
- README.txt
- notes.md
Specifications
- Seed
- 20260807
- Members
- 2
- Unknown Header Id
- 0x9901
- Unknown Payload Bytes
- 12
- Also Present
- 0x5455 extended timestamp, in a different order per header
- Requirement
- skip by declared length; never guess the payload
Testing contract
Expected to pass- Scenario
- Parse the extra-field chain in every local and central header and extract both members.
- Expected result
- The 0x9901 field is skipped by its declared 12-byte length, the 0x5455 timestamp behind it is still found in both orderings, and both members extract with matching CRCs.
What is a .zip file?
ZIP is a widely supported archive format that bundles multiple files and directories into one container, typically with per-file DEFLATE compression and a central directory index. It supports random access to individual entries without decompressing the whole archive. It underlies many document formats such as DOCX and EPUB.
How to use this file
Use an example ZIP to test archive extraction, central-directory parsing, per-entry decompression, and protection against path-traversal (zip-slip) during unpacking.
How to use this file for testing
“ZIP - Unknown Extra Field ID” is a deterministic Novus Examples fixture for Conversion testing, Error handling, Metadata testing. The same content exported across many formats and linked as a group, so you can convert one and diff against the expected twin.
Documented properties for this file: seed 20260807. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Archive fixtures are documented down to their member list (shown on this page) and are deliberately safe — no zip bombs, executables, or hidden payloads. Test extractors against nested, unicode, empty, and encrypted variants.
Code examples
unzip -l unknown-extra-field.zip # list members
unzip unknown-extra-field.zip -d out/ # extractRelated files
- tarTAR - FIFO and Device Node RecordsA FIFO, a character device and a block device, each a header with no data blocks and with the device numbers in the devmajor/devminor fields. Unprivileged extraction cannot create the two device nodes, so the correct behaviour is to skip them with a warning rather than to abort the whole archive or to create empty regular files in their place.

- tarTAR - Large UID/GID (GNU base-256)The uid and gid fields hold 7 octal digits, so they top out at 2097151. This member is owned by uid 3000000, which needs GNU base-256 encoding: the field's high bit is set and the remaining bytes are a big-endian integer. Its group sibling encodes the same ownership the other way, so a reader can be checked against both without a second variable.

- tarTAR - Large UID/GID (PAX records)The uid and gid fields hold 7 octal digits, so they top out at 2097151. This member is owned by uid 3000000, which needs PAX uid=/gid= records in an 'x' extended header, with the classic field left at its maximum. Its group sibling encodes the same ownership the other way, so a reader can be checked against both without a second variable.

- ttfTTF — Correct Checksums (integrity reference)The clean control for the checksum pair: a small, valid font whose head.checkSumAdjustment and every table-directory checksum are correct. Diff it against its damaged twin to see exactly which four bytes a validator is complaining about. Original typeface, free to use.

- ttfTTF — Intentionally Corrupt: Wrong glyf Table-Directory ChecksumAn intentionally corrupt font whose glyf table data is perfectly fine but whose recorded checksum in the table directory is wrong. The complement to the head fixture: this one catches tools that verify per-table checksums, and its glyphs still draw, so the damage is invisible without a real integrity check.

- ttfTTF — Intentionally Corrupt: Wrong head.checkSumAdjustmentAn intentionally corrupt font: four bytes of head.checkSumAdjustment overwritten with 0xDEADBEEF and nothing else touched. It still renders, because browsers and operating systems do not verify the field — which is precisely why this is a useful fixture for validators, signing tools, and font-integrity checks that claim they do.

Generated by generation/archives_p7.py. Free for any use, no attribution required — license.