F56 number-size-base256A size of 512 in base-256.
Tolerate(draft) A strict parser may reject this archive. If it accepts it, it must extract the expected tree below.
F56-number-size-base256.tar |
test archive, 2,048 bytes
sha256 11b31d32aa7238f2467e85a2268f250f4fbf5b7012414994145f2d3e1000f820 |
F56-number-size-base256.json | expected result |
F56-number-size-base256.txt | annotated blocks |
F56-number-size-base256.py | generator script |
The archive has a file a of 512 bytes, whose size field is in base-256: the byte 0x80, followed by 512 as a binary number.
Sizes of 8 GiB and over do not fit in the 11 octal digits of the size field. In pax, they are written in a size record. In GNU's format, they are written in base-256. The first byte of the field, 0x80, tells it apart from octal. In POSIX, numeric fields are octal, so base-256 is an extension. This case is tolerated because it has one reading, here 512: a reader that does not support base-256 cannot take it for octal. It is a small instance of the base-256 sizes of large files, which no case can contain.
The expected tree:
| path | kind | contents |
|---|---|---|
a | file | 512 bytes, sha256 a0b708e6 |
Seen in: none of the scanned tarballs.
Every block of 512 bytes, to scale, with its offset. Hover over a field for its bytes.
F56-number-size-base256: tolerated: a strict parser may reject it; if it accepts it, it must extract its tree, and the default policy accepts it
A size of 512 in base-256.
The archive has a file `a` of 512 bytes, whose size field is in base-256: the byte `0x80`, followed
by 512 as a binary number.
Sizes of 8 GiB and over do not fit in the 11 octal digits of the size field. In pax, they are
written in a `size` record. In GNU's format, they are written in base-256. The first byte of the
field, `0x80`, tells it apart from octal. In POSIX, numeric fields are octal, so
base-256 is an extension. This case is tolerated because it has one reading, here 512: a reader that
does not support base-256 cannot take it for octal. It is a small instance of the base-256 sizes of
large files, which no case can contain.
Seen in: none of the scanned tarballs.
See also: F29 and F30, a negative size and a size past 64 bits, in base-256.
0x000000 header: regular file, size 512, in base-256
name [ 0,100) "a" + 99 NUL
mode [100,108) "0000644" + NUL 644 (octal)
uid [108,116) "0000000" + NUL 0
gid [116,124) "0000000" + NUL 0
size [124,136) "\x80\0\0\0\0\0\0\0\0\0\x02\0" 512: base-256
mtime [136,148) "00000000000" + NUL 0
chksum [148,156) "006520\0 " 3408: the unsigned sum of the header, this field as spaces
typeflag [156,157) "0" regular file
linkname [157,257) 100 NUL
magic [257,263) "ustar" + NUL
version [263,265) "00"
uname [265,297) 32 NUL
gname [297,329) 32 NUL
devmajor [329,337) "0000000" + NUL 0
devminor [337,345) "0000000" + NUL 0
prefix [345,500) 155 NUL
pad [500,512) 12 NUL
0x000200 data
512 bytes
"a\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\n" ...
0x000400 2 zero blocks: the end-of-archive marker
0x000800 end of file
As xxd writes it: xxd -r makes the archive of it.
00000000: 6100 0000 0000 0000 0000 0000 0000 0000 a............... 00000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000060: 0000 0000 3030 3030 3634 3400 3030 3030 ....0000644.0000 00000070: 3030 3000 3030 3030 3030 3000 8000 0000 000.0000000..... 00000080: 0000 0000 0000 0200 3030 3030 3030 3030 ........00000000 00000090: 3030 3000 3030 3635 3230 0020 3000 0000 000.006520. 0... 000000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000100: 0075 7374 6172 0030 3000 0000 0000 0000 .ustar.00....... 00000110: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000120: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000130: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000140: 0000 0000 0000 0000 0030 3030 3030 3030 .........0000000 00000150: 0030 3030 3030 3030 0000 0000 0000 0000 .0000000........ 00000160: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000170: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000180: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000190: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000200: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000210: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000220: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000230: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000240: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000250: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000260: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000270: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000280: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000290: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000002a0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000002b0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000002c0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000002d0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000002e0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000002f0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000300: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000310: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000320: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000330: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000340: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000350: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000360: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000370: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000380: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000390: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000003a0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000003b0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000003c0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000003d0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000003e0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 000003f0: 610a 610a 610a 610a 610a 610a 610a 610a a.a.a.a.a.a.a.a. 00000400: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000410: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000420: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000430: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000440: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000450: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000460: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000470: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000480: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000490: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000004a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000004b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000004c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000004d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000004e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000004f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000500: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000510: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000520: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000530: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000540: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000550: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000560: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000570: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000580: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000590: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000005a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000005b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000005c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000005d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000005e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000005f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000600: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000610: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000620: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000630: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000640: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000650: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000660: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000670: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000680: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000690: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000006a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000006b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000006c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000006d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000006e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000006f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000700: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000710: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000720: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000730: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000740: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000750: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000760: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000770: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000780: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000790: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000007a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000007b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000007c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000007d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000007e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000007f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
In the outcome column, ✅ means that the implementation follows the default policy.
| implementation | version | outcome | what it makes of it |
|---|---|---|---|
| GNU tar | tar (GNU tar) 1.35 | ➕ accepts | the expected tree |
| bsdtar | bsdtar 3.8.11 - libarchive 3.8.11 | ➕ accepts | the expected tree |
| BusyBox tar | BusyBox v1.38.0, defconfig | ➕ accepts | the expected tree |
| 7-Zip | 7-Zip (z) 26.05 (x64) | ➕ accepts | the expected tree |
| Python tarfile, filter=data, as in pip | CPython 3.15.2 | ➕ accepts | the expected tree |
| Python tarfile, filter=tar | CPython 3.15.2 | ➕ accepts | the expected tree |
| Python tarfile, filter=fully_trusted | CPython 3.15.2 | ➕ accepts | the expected tree |
| node-tar | tar 7.5.22 | ➕ accepts | the expected tree |
| node-tar, strict | tar 7.5.22 | ➕ accepts | the expected tree |
| tar-fs | tar-fs 3.1.3, on tar-stream 3.2.2 | ➕ accepts | the expected tree |
| Java Commons Compress | Commons Compress 1.28.0, Expander, on Java 27.0.1.0.2 | ➕ accepts | the expected tree |
| .NET System.Formats.Tar | System.Formats.Tar of .NET 10.0.14, ExtractToDirectory | ➕ accepts | the expected tree |
| PHP PharData, as in Composer | PharData of PHP 8.5.12, as Composer's TarDownloader calls it | ➖ rejects | error: UnexpectedValueException: phar error: "suite/archives/F56-number-size-base256.tar" is a corrupted tar file (invalid entry size) |
| Go containerd archive.Apply | containerd v2.4.2, archive.Apply, of go1.27.3 | ➕ accepts | the expected tree |
| Rust tar | tar 0.4.46, unpack | ➕ accepts | the expected tree |
| Rust astral-tokio-tar | astral-tokio-tar 0.7.1, unpack | ➕ accepts | the expected tree |
| Rust tar-codec, as in uv | tar-codec 0.0.16, with the policies of uv 0.13 | ➖ rejects | error: at byte 0: invalid tar size field: found [128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0] |
| RubyGems | RubyGems 4.0.20 of Ruby 4.0.9, extract_tar_gz | ➖ rejects | error: Gem::Package::TarInvalidError: "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02" is not an octal string |
| R untar, internal | utils::untar of R 4.6.2, tar = "internal" | ➖ rejects | error: invalid octal digit |
| Perl Archive::Tar | Archive::Tar 3.12 of Perl v5.44.0 | ➕ accepts | the expected tree |
| Haskell tar | tar 0.7.2.0, extract, of GHC 9.14 | ➕ accepts | the expected tree |
| Julia Tar.jl | Tar 1.10.0 of Julia 1.13.3 | ➕ accepts | the expected tree |
| live-bootstrap untar | mescc-tools-extra a151c245e512, as live-bootstrap pins it | ➖ rejects | error: Checksum failure The extraction of suite/archives/F56-number-size-base256.tar produced errors |
| live-bootstrap untar, --non-strict | mescc-tools-extra a151c245e512, as live-bootstrap pins it | ➖ rejects | error: non-strict mode enabled, preparing for chaos Checksum failure The extraction of suite/archives/F56-number-size-base256.tar produced errors |
The table below shows how many release tarballs have the features of this test case.
| ecosystem | tarballs | with it | share |
|---|---|---|---|
| Spack | 37,553 | 0 | none |
| nixpkgs | 18,990 | 0 | none |
| Guix | 10,168 | 0 | none |
| PyPI | 10,000 | 0 | none |
| crates.io | 5,000 | 0 | none |
| RubyGems | 5,000 | 0 | none |
| live-bootstrap | 171 | 0 | none |
| total (distinct) | 82,586 | 0 | none |