From e5abf51296fa1405c4a6314eafc1b97d247c5b60 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sat, 25 Jul 2026 14:03:03 +0900 Subject: internal/pkg: decompress xz streams This uses a port of the public domain xz implementation. Signed-off-by: Ophestra --- .../testdata/other/good-1-x86-lzma2-offset-2048.xz | Bin 0 -> 724 bytes internal/xz/testdata/other/good-2-lzma2-corrupt.xz | Bin 0 -> 92 bytes internal/xz/testdata/other/random-1mb.xz | Bin 0 -> 1000108 bytes internal/xz/testdata/other/words.xz | Bin 0 -> 42664 bytes internal/xz/testdata/other/zeros-100mb.xz | Bin 0 -> 14676 bytes internal/xz/testdata/xz-utils/README | 240 +++++++++++++++++++++ .../xz/testdata/xz-utils/bad-0-backward_size.xz | Bin 0 -> 32 bytes .../xz/testdata/xz-utils/bad-0-empty-truncated.xz | Bin 0 -> 31 bytes .../xz/testdata/xz-utils/bad-0-footer_magic.xz | Bin 0 -> 32 bytes .../xz/testdata/xz-utils/bad-0-header_magic.xz | Bin 0 -> 32 bytes .../xz/testdata/xz-utils/bad-0-nonempty_index.xz | Bin 0 -> 32 bytes internal/xz/testdata/xz-utils/bad-0cat-alone.xz | Bin 0 -> 55 bytes .../xz/testdata/xz-utils/bad-0cat-header_magic.xz | Bin 0 -> 64 bytes internal/xz/testdata/xz-utils/bad-0catpad-empty.xz | Bin 0 -> 69 bytes internal/xz/testdata/xz-utils/bad-0pad-empty.xz | Bin 0 -> 37 bytes .../xz/testdata/xz-utils/bad-1-block_header-1.xz | Bin 0 -> 64 bytes .../xz/testdata/xz-utils/bad-1-block_header-2.xz | Bin 0 -> 64 bytes .../xz/testdata/xz-utils/bad-1-block_header-3.xz | Bin 0 -> 68 bytes .../xz/testdata/xz-utils/bad-1-block_header-4.xz | Bin 0 -> 76 bytes .../xz/testdata/xz-utils/bad-1-block_header-5.xz | Bin 0 -> 72 bytes .../xz/testdata/xz-utils/bad-1-block_header-6.xz | Bin 0 -> 72 bytes internal/xz/testdata/xz-utils/bad-1-check-crc32.xz | Bin 0 -> 68 bytes internal/xz/testdata/xz-utils/bad-1-check-crc64.xz | Bin 0 -> 72 bytes .../xz/testdata/xz-utils/bad-1-check-sha256.xz | Bin 0 -> 96 bytes internal/xz/testdata/xz-utils/bad-1-lzma2-1.xz | Bin 0 -> 64 bytes internal/xz/testdata/xz-utils/bad-1-lzma2-2.xz | Bin 0 -> 424 bytes internal/xz/testdata/xz-utils/bad-1-lzma2-3.xz | Bin 0 -> 424 bytes internal/xz/testdata/xz-utils/bad-1-lzma2-4.xz | Bin 0 -> 408 bytes internal/xz/testdata/xz-utils/bad-1-lzma2-5.xz | Bin 0 -> 408 bytes internal/xz/testdata/xz-utils/bad-1-lzma2-6.xz | Bin 0 -> 68 bytes internal/xz/testdata/xz-utils/bad-1-lzma2-7.xz | Bin 0 -> 408 bytes internal/xz/testdata/xz-utils/bad-1-lzma2-8.xz | Bin 0 -> 464 bytes .../xz/testdata/xz-utils/bad-1-stream_flags-1.xz | Bin 0 -> 68 bytes .../xz/testdata/xz-utils/bad-1-stream_flags-2.xz | Bin 0 -> 68 bytes .../xz/testdata/xz-utils/bad-1-stream_flags-3.xz | Bin 0 -> 68 bytes internal/xz/testdata/xz-utils/bad-1-vli-1.xz | Bin 0 -> 72 bytes internal/xz/testdata/xz-utils/bad-1-vli-2.xz | Bin 0 -> 76 bytes .../xz-utils/bad-2-compressed_data_padding.xz | Bin 0 -> 92 bytes internal/xz/testdata/xz-utils/bad-2-index-1.xz | Bin 0 -> 92 bytes internal/xz/testdata/xz-utils/bad-2-index-2.xz | Bin 0 -> 92 bytes internal/xz/testdata/xz-utils/bad-2-index-3.xz | Bin 0 -> 92 bytes internal/xz/testdata/xz-utils/bad-2-index-4.xz | Bin 0 -> 92 bytes internal/xz/testdata/xz-utils/bad-2-index-5.xz | Bin 0 -> 92 bytes internal/xz/testdata/xz-utils/good-0-empty.xz | Bin 0 -> 32 bytes internal/xz/testdata/xz-utils/good-0cat-empty.xz | Bin 0 -> 64 bytes .../xz/testdata/xz-utils/good-0catpad-empty.xz | Bin 0 -> 68 bytes internal/xz/testdata/xz-utils/good-0pad-empty.xz | Bin 0 -> 36 bytes .../xz/testdata/xz-utils/good-1-3delta-lzma2.xz | Bin 0 -> 528 bytes .../xz/testdata/xz-utils/good-1-block_header-1.xz | Bin 0 -> 72 bytes .../xz/testdata/xz-utils/good-1-block_header-2.xz | Bin 0 -> 68 bytes .../xz/testdata/xz-utils/good-1-block_header-3.xz | Bin 0 -> 68 bytes .../xz/testdata/xz-utils/good-1-check-crc32.xz | Bin 0 -> 68 bytes .../xz/testdata/xz-utils/good-1-check-crc64.xz | Bin 0 -> 72 bytes internal/xz/testdata/xz-utils/good-1-check-none.xz | Bin 0 -> 64 bytes .../xz/testdata/xz-utils/good-1-check-sha256.xz | Bin 0 -> 96 bytes .../testdata/xz-utils/good-1-delta-lzma2.tiff.xz | Bin 0 -> 51316 bytes internal/xz/testdata/xz-utils/good-1-lzma2-1.xz | Bin 0 -> 424 bytes internal/xz/testdata/xz-utils/good-1-lzma2-2.xz | Bin 0 -> 424 bytes internal/xz/testdata/xz-utils/good-1-lzma2-3.xz | Bin 0 -> 408 bytes internal/xz/testdata/xz-utils/good-1-lzma2-4.xz | Bin 0 -> 464 bytes internal/xz/testdata/xz-utils/good-1-lzma2-5.xz | Bin 0 -> 52 bytes .../xz/testdata/xz-utils/good-1-sparc-lzma2.xz | Bin 0 -> 612 bytes internal/xz/testdata/xz-utils/good-1-x86-lzma2.xz | Bin 0 -> 716 bytes internal/xz/testdata/xz-utils/good-2-lzma2.xz | Bin 0 -> 92 bytes .../testdata/xz-utils/unsupported-block_header.xz | Bin 0 -> 68 bytes internal/xz/testdata/xz-utils/unsupported-check.xz | Bin 0 -> 68 bytes .../xz-utils/unsupported-filter_flags-1.xz | Bin 0 -> 68 bytes .../xz-utils/unsupported-filter_flags-2.xz | Bin 0 -> 68 bytes .../xz-utils/unsupported-filter_flags-3.xz | Bin 0 -> 68 bytes 69 files changed, 240 insertions(+) create mode 100644 internal/xz/testdata/other/good-1-x86-lzma2-offset-2048.xz create mode 100644 internal/xz/testdata/other/good-2-lzma2-corrupt.xz create mode 100644 internal/xz/testdata/other/random-1mb.xz create mode 100644 internal/xz/testdata/other/words.xz create mode 100644 internal/xz/testdata/other/zeros-100mb.xz create mode 100644 internal/xz/testdata/xz-utils/README create mode 100644 internal/xz/testdata/xz-utils/bad-0-backward_size.xz create mode 100644 internal/xz/testdata/xz-utils/bad-0-empty-truncated.xz create mode 100644 internal/xz/testdata/xz-utils/bad-0-footer_magic.xz create mode 100644 internal/xz/testdata/xz-utils/bad-0-header_magic.xz create mode 100644 internal/xz/testdata/xz-utils/bad-0-nonempty_index.xz create mode 100644 internal/xz/testdata/xz-utils/bad-0cat-alone.xz create mode 100644 internal/xz/testdata/xz-utils/bad-0cat-header_magic.xz create mode 100644 internal/xz/testdata/xz-utils/bad-0catpad-empty.xz create mode 100644 internal/xz/testdata/xz-utils/bad-0pad-empty.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-block_header-1.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-block_header-2.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-block_header-3.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-block_header-4.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-block_header-5.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-block_header-6.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-check-crc32.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-check-crc64.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-check-sha256.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-lzma2-1.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-lzma2-2.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-lzma2-3.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-lzma2-4.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-lzma2-5.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-lzma2-6.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-lzma2-7.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-lzma2-8.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-stream_flags-1.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-stream_flags-2.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-stream_flags-3.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-vli-1.xz create mode 100644 internal/xz/testdata/xz-utils/bad-1-vli-2.xz create mode 100644 internal/xz/testdata/xz-utils/bad-2-compressed_data_padding.xz create mode 100644 internal/xz/testdata/xz-utils/bad-2-index-1.xz create mode 100644 internal/xz/testdata/xz-utils/bad-2-index-2.xz create mode 100644 internal/xz/testdata/xz-utils/bad-2-index-3.xz create mode 100644 internal/xz/testdata/xz-utils/bad-2-index-4.xz create mode 100644 internal/xz/testdata/xz-utils/bad-2-index-5.xz create mode 100644 internal/xz/testdata/xz-utils/good-0-empty.xz create mode 100644 internal/xz/testdata/xz-utils/good-0cat-empty.xz create mode 100644 internal/xz/testdata/xz-utils/good-0catpad-empty.xz create mode 100644 internal/xz/testdata/xz-utils/good-0pad-empty.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-3delta-lzma2.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-block_header-1.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-block_header-2.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-block_header-3.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-check-crc32.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-check-crc64.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-check-none.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-check-sha256.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-delta-lzma2.tiff.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-lzma2-1.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-lzma2-2.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-lzma2-3.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-lzma2-4.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-lzma2-5.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-sparc-lzma2.xz create mode 100644 internal/xz/testdata/xz-utils/good-1-x86-lzma2.xz create mode 100644 internal/xz/testdata/xz-utils/good-2-lzma2.xz create mode 100644 internal/xz/testdata/xz-utils/unsupported-block_header.xz create mode 100644 internal/xz/testdata/xz-utils/unsupported-check.xz create mode 100644 internal/xz/testdata/xz-utils/unsupported-filter_flags-1.xz create mode 100644 internal/xz/testdata/xz-utils/unsupported-filter_flags-2.xz create mode 100644 internal/xz/testdata/xz-utils/unsupported-filter_flags-3.xz (limited to 'internal/xz/testdata') diff --git a/internal/xz/testdata/other/good-1-x86-lzma2-offset-2048.xz b/internal/xz/testdata/other/good-1-x86-lzma2-offset-2048.xz new file mode 100644 index 00000000..14aa5b0a Binary files /dev/null and b/internal/xz/testdata/other/good-1-x86-lzma2-offset-2048.xz differ diff --git a/internal/xz/testdata/other/good-2-lzma2-corrupt.xz b/internal/xz/testdata/other/good-2-lzma2-corrupt.xz new file mode 100644 index 00000000..a3b902fa Binary files /dev/null and b/internal/xz/testdata/other/good-2-lzma2-corrupt.xz differ diff --git a/internal/xz/testdata/other/random-1mb.xz b/internal/xz/testdata/other/random-1mb.xz new file mode 100644 index 00000000..29f59f13 Binary files /dev/null and b/internal/xz/testdata/other/random-1mb.xz differ diff --git a/internal/xz/testdata/other/words.xz b/internal/xz/testdata/other/words.xz new file mode 100644 index 00000000..9c682cf4 Binary files /dev/null and b/internal/xz/testdata/other/words.xz differ diff --git a/internal/xz/testdata/other/zeros-100mb.xz b/internal/xz/testdata/other/zeros-100mb.xz new file mode 100644 index 00000000..4d7fe0d0 Binary files /dev/null and b/internal/xz/testdata/other/zeros-100mb.xz differ diff --git a/internal/xz/testdata/xz-utils/README b/internal/xz/testdata/xz-utils/README new file mode 100644 index 00000000..53950edb --- /dev/null +++ b/internal/xz/testdata/xz-utils/README @@ -0,0 +1,240 @@ + +.xz Test Files +---------------- + +0. Introduction + + This directory contains bunch of files to test handling of .xz files + in .xz decoder implementations. Many of the files have been created + by hand with a hex editor, thus there is no better "source code" than + the files themselves. All the test files (*.xz) and this README have + been put into the public domain. + + +1. File Types + + Good files (good-*.xz) must decode successfully without requiring + a lot of CPU time or RAM. + + Unsupported files (unsupported-*.xz) are good files, but headers + indicate features not supported by the current file format + specification. + + Bad files (bad-*.xz) must cause the decoder to give an error. Like + with the good files, these files must not require a lot of CPU time + or RAM before they get detected to be broken. + + +2. Descriptions of Individual Files + +2.1. Good Files + + good-0-empty.xz has one Stream with no Blocks. + + good-0pad-empty.xz has one Stream with no Blocks followed by + four-byte Stream Padding. + + good-0cat-empty.xz has two zero-Block Streams concatenated without + Stream Padding. + + good-0catpad-empty.xz has two zero-Block Streams concatenated with + four-byte Stream Padding between the Streams. + + good-1-check-none.xz has one Stream with one Block with two + uncompressed LZMA2 chunks and no integrity check. + + good-1-check-crc32.xz has one Stream with one Block with two + uncompressed LZMA2 chunks and CRC32 check. + + good-1-check-crc64.xz is like good-1-check-crc32.xz but with CRC64. + + good-1-check-sha256.xz is like good-1-check-crc32.xz but with + SHA256. + + good-2-lzma2.xz has one Stream with two Blocks with one uncompressed + LZMA2 chunk in each Block. + + good-1-block_header-1.xz has both Compressed Size and Uncompressed + Size in the Block Header. This has also four extra bytes of Header + Padding. + + good-1-block_header-2.xz has known Compressed Size. + + good-1-block_header-3.xz has known Uncompressed Size. + + good-1-delta-lzma2.tiff.xz is an image file that compresses + better with Delta+LZMA2 than with plain LZMA2. + + good-1-x86-lzma2.xz uses the x86 filter (BCJ) and LZMA2. The + uncompressed file is compress_prepared_bcj_x86 found from the tests + directory. + + good-1-sparc-lzma2.xz uses the SPARC filter and LZMA. The + uncompressed file is compress_prepared_bcj_sparc found from the tests + directory. + + good-1-lzma2-1.xz has two LZMA2 chunks, of which the second sets + new properties. + + good-1-lzma2-2.xz has two LZMA2 chunks, of which the second resets + the state without specifying new properties. + + good-1-lzma2-3.xz has two LZMA2 chunks, of which the first is + uncompressed and the second is LZMA. The first chunk resets dictionary + and the second sets new properties. + + good-1-lzma2-4.xz has three LZMA2 chunks: First is LZMA, second is + uncompressed with dictionary reset, and third is LZMA with new + properties but without dictionary reset. + + good-1-lzma2-5.xz has an empty LZMA2 stream with only the end of + payload marker. XZ Utils 5.0.1 and older incorrectly see this file + as corrupt. + + good-1-3delta-lzma2.xz has three Delta filters and LZMA2. + + +2.2. Unsupported Files + + unsupported-check.xz uses Check ID 0x02 which isn't supported by + the current version of the file format. It is implementation-defined + how this file handled (it may reject it, or decode it possibly with + a warning). + + unsupported-block_header.xz has a non-null byte in Header Padding, + which may indicate presence of a new unsupported field. + + unsupported-filter_flags-1.xz has unsupported Filter ID 0x7F. + + unsupported-filter_flags-2.xz specifies only Delta filter in the + List of Filter Flags, but Delta isn't allowed as the last filter in + the chain. It could be a little more correct to detect this file as + corrupt instead of unsupported, but saying it is unsupported is + simpler in case of liblzma. + + unsupported-filter_flags-3.xz specifies two LZMA2 filters in the + List of Filter Flags. LZMA2 is allowed only as the last filter in the + chain. It could be a little more correct to detect this file as + corrupt instead of unsupported, but saying it is unsupported is + simpler in case of liblzma. + + +2.3. Bad Files + + bad-0pad-empty.xz has one Stream with no Blocks followed by + five-byte Stream Padding. Stream Padding must be a multiple of four + bytes, thus this file is corrupt. + + bad-0catpad-empty.xz has two zero-Block Streams concatenated with + five-byte Stream Padding between the Streams. + + bad-0cat-alone.xz is good-0-empty.xz concatenated with an empty + LZMA_Alone file. + + bad-0cat-header_magic.xz is good-0cat-empty.xz but with one byte + wrong in the Header Magic Bytes field of the second Stream. liblzma + gives LZMA_DATA_ERROR for this. (LZMA_FORMAT_ERROR is used only if + the first Stream of a file has invalid Header Magic Bytes.) + + bad-0-header_magic.xz is good-0-empty.xz but with one byte wrong + in the Header Magic Bytes field. liblzma gives LZMA_FORMAT_ERROR for + this. + + bad-0-footer_magic.xz is good-0-empty.xz but with one byte wrong + in the Footer Magic Bytes field. liblzma gives LZMA_DATA_ERROR for + this. + + bad-0-empty-truncated.xz is good-0-empty.xz without the last byte + of the file. + + bad-0-nonempty_index.xz has no Blocks but Index claims that there is + one Block. + + bad-0-backward_size.xz has wrong Backward Size in Stream Footer. + + bad-1-stream_flags-1.xz has different Stream Flags in Stream Header + and Stream Footer. + + bad-1-stream_flags-2.xz has wrong CRC32 in Stream Header. + + bad-1-stream_flags-3.xz has wrong CRC32 in Stream Footer. + + bad-1-vli-1.xz has two-byte variable-length integer in the + Uncompressed Size field in Block Header while one-byte would be enough + for that value. It's important that the file gets rejected due to too + big integer encoding instead of due to Uncompressed Size not matching + the value stored in the Block Header. That is, the decoder must not + try to decode the Compressed Data field. + + bad-1-vli-2.xz has ten-byte variable-length integer as Uncompressed + Size in Block Header. It's important that the file gets rejected due + to too big integer encoding instead of due to Uncompressed Size not + matching the value stored in the Block Header. That is, the decoder + must not try to decode the Compressed Data field. + + bad-1-block_header-1.xz has Block Header that ends in the middle of + the Filter Flags field. + + bad-1-block_header-2.xz has Block Header that has Compressed Size and + Uncompressed Size but no List of Filter Flags field. + + bad-1-block_header-3.xz has wrong CRC32 in Block Header. + + bad-1-block_header-4.xz has too big Compressed Size in Block Header + (2^63 - 1 bytes while maximum is a little less, because the whole + Block must stay smaller than 2^63). It's important that the file + gets rejected due to invalid Compressed Size value; the decoder + must not try decoding the Compressed Data field. + + bad-1-block_header-5.xz has zero as Compressed Size in Block Header. + + bad-1-block_header-6.xz has corrupt Block Header which may crash + xz -lvv in XZ Utils 5.0.3 and earlier. It was fixed in the commit + c0297445064951807803457dca1611b3c47e7f0f. + + bad-2-index-1.xz has wrong Unpadded Sizes in Index. + + bad-2-index-2.xz has wrong Uncompressed Sizes in Index. + + bad-2-index-3.xz has non-null byte in Index Padding. + + bad-2-index-4.xz wrong CRC32 in Index. + + bad-2-index-5.xz has zero as Unpadded Size. It is important that the + file gets rejected specifically due to Unpadded Size having an invalid + value. + + bad-2-compressed_data_padding.xz has non-null byte in the padding of + the Compressed Data field of the first Block. + + bad-1-check-crc32.xz has wrong Check (CRC32). + + bad-1-check-crc64.xz has wrong Check (CRC64). + + bad-1-check-sha256.xz has wrong Check (SHA-256). + + bad-1-lzma2-1.xz has LZMA2 stream whose first chunk (uncompressed) + doesn't reset the dictionary. + + bad-1-lzma2-2.xz has two LZMA2 chunks, of which the second chunk + indicates dictionary reset, but the LZMA compressed data tries to + repeat data from the previous chunk. + + bad-1-lzma2-3.xz sets new invalid properties (lc=8, lp=0, pb=0) in + the middle of Block. + + bad-1-lzma2-4.xz has two LZMA2 chunks, of which the first is + uncompressed and the second is LZMA. The first chunk resets dictionary + as it should, but the second chunk tries to reset state without + specifying properties for LZMA. + + bad-1-lzma2-5.xz is like bad-1-lzma2-4.xz but doesn't try to reset + anything in the header of the second chunk. + + bad-1-lzma2-6.xz has reserved LZMA2 control byte value (0x03). + + bad-1-lzma2-7.xz has EOPM at LZMA level. + + bad-1-lzma2-8.xz is like good-1-lzma2-4.xz but doesn't set new + properties in the third LZMA2 chunk. + diff --git a/internal/xz/testdata/xz-utils/bad-0-backward_size.xz b/internal/xz/testdata/xz-utils/bad-0-backward_size.xz new file mode 100644 index 00000000..2b46fa93 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-0-backward_size.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-0-empty-truncated.xz b/internal/xz/testdata/xz-utils/bad-0-empty-truncated.xz new file mode 100644 index 00000000..f879af84 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-0-empty-truncated.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-0-footer_magic.xz b/internal/xz/testdata/xz-utils/bad-0-footer_magic.xz new file mode 100644 index 00000000..5d9e3894 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-0-footer_magic.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-0-header_magic.xz b/internal/xz/testdata/xz-utils/bad-0-header_magic.xz new file mode 100644 index 00000000..5984a453 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-0-header_magic.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-0-nonempty_index.xz b/internal/xz/testdata/xz-utils/bad-0-nonempty_index.xz new file mode 100644 index 00000000..ed6e81fa Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-0-nonempty_index.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-0cat-alone.xz b/internal/xz/testdata/xz-utils/bad-0cat-alone.xz new file mode 100644 index 00000000..a915a3a1 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-0cat-alone.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-0cat-header_magic.xz b/internal/xz/testdata/xz-utils/bad-0cat-header_magic.xz new file mode 100644 index 00000000..426bf2d4 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-0cat-header_magic.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-0catpad-empty.xz b/internal/xz/testdata/xz-utils/bad-0catpad-empty.xz new file mode 100644 index 00000000..97c13302 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-0catpad-empty.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-0pad-empty.xz b/internal/xz/testdata/xz-utils/bad-0pad-empty.xz new file mode 100644 index 00000000..45e00b74 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-0pad-empty.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-block_header-1.xz b/internal/xz/testdata/xz-utils/bad-1-block_header-1.xz new file mode 100644 index 00000000..d991536a Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-block_header-1.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-block_header-2.xz b/internal/xz/testdata/xz-utils/bad-1-block_header-2.xz new file mode 100644 index 00000000..ae42ecf0 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-block_header-2.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-block_header-3.xz b/internal/xz/testdata/xz-utils/bad-1-block_header-3.xz new file mode 100644 index 00000000..606cbd20 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-block_header-3.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-block_header-4.xz b/internal/xz/testdata/xz-utils/bad-1-block_header-4.xz new file mode 100644 index 00000000..e72dfbfc Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-block_header-4.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-block_header-5.xz b/internal/xz/testdata/xz-utils/bad-1-block_header-5.xz new file mode 100644 index 00000000..96521129 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-block_header-5.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-block_header-6.xz b/internal/xz/testdata/xz-utils/bad-1-block_header-6.xz new file mode 100644 index 00000000..ecf0ff09 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-block_header-6.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-check-crc32.xz b/internal/xz/testdata/xz-utils/bad-1-check-crc32.xz new file mode 100644 index 00000000..1ebe1310 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-check-crc32.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-check-crc64.xz b/internal/xz/testdata/xz-utils/bad-1-check-crc64.xz new file mode 100644 index 00000000..cdb77093 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-check-crc64.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-check-sha256.xz b/internal/xz/testdata/xz-utils/bad-1-check-sha256.xz new file mode 100644 index 00000000..def7bff1 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-check-sha256.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-lzma2-1.xz b/internal/xz/testdata/xz-utils/bad-1-lzma2-1.xz new file mode 100644 index 00000000..640f592e Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-lzma2-1.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-lzma2-2.xz b/internal/xz/testdata/xz-utils/bad-1-lzma2-2.xz new file mode 100644 index 00000000..69ab07d4 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-lzma2-2.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-lzma2-3.xz b/internal/xz/testdata/xz-utils/bad-1-lzma2-3.xz new file mode 100644 index 00000000..66f48c5d Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-lzma2-3.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-lzma2-4.xz b/internal/xz/testdata/xz-utils/bad-1-lzma2-4.xz new file mode 100644 index 00000000..ac970419 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-lzma2-4.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-lzma2-5.xz b/internal/xz/testdata/xz-utils/bad-1-lzma2-5.xz new file mode 100644 index 00000000..700464d5 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-lzma2-5.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-lzma2-6.xz b/internal/xz/testdata/xz-utils/bad-1-lzma2-6.xz new file mode 100644 index 00000000..2bda0c4b Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-lzma2-6.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-lzma2-7.xz b/internal/xz/testdata/xz-utils/bad-1-lzma2-7.xz new file mode 100644 index 00000000..8cc711c1 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-lzma2-7.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-lzma2-8.xz b/internal/xz/testdata/xz-utils/bad-1-lzma2-8.xz new file mode 100644 index 00000000..f21a71b6 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-lzma2-8.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-stream_flags-1.xz b/internal/xz/testdata/xz-utils/bad-1-stream_flags-1.xz new file mode 100644 index 00000000..6511773e Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-stream_flags-1.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-stream_flags-2.xz b/internal/xz/testdata/xz-utils/bad-1-stream_flags-2.xz new file mode 100644 index 00000000..0c66b364 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-stream_flags-2.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-stream_flags-3.xz b/internal/xz/testdata/xz-utils/bad-1-stream_flags-3.xz new file mode 100644 index 00000000..a9b1f983 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-stream_flags-3.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-vli-1.xz b/internal/xz/testdata/xz-utils/bad-1-vli-1.xz new file mode 100644 index 00000000..6514ab12 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-vli-1.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-1-vli-2.xz b/internal/xz/testdata/xz-utils/bad-1-vli-2.xz new file mode 100644 index 00000000..c16941b4 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-1-vli-2.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-2-compressed_data_padding.xz b/internal/xz/testdata/xz-utils/bad-2-compressed_data_padding.xz new file mode 100644 index 00000000..382d0476 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-2-compressed_data_padding.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-2-index-1.xz b/internal/xz/testdata/xz-utils/bad-2-index-1.xz new file mode 100644 index 00000000..f51ed214 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-2-index-1.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-2-index-2.xz b/internal/xz/testdata/xz-utils/bad-2-index-2.xz new file mode 100644 index 00000000..d7d00ff3 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-2-index-2.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-2-index-3.xz b/internal/xz/testdata/xz-utils/bad-2-index-3.xz new file mode 100644 index 00000000..62428b87 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-2-index-3.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-2-index-4.xz b/internal/xz/testdata/xz-utils/bad-2-index-4.xz new file mode 100644 index 00000000..9cf2df65 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-2-index-4.xz differ diff --git a/internal/xz/testdata/xz-utils/bad-2-index-5.xz b/internal/xz/testdata/xz-utils/bad-2-index-5.xz new file mode 100644 index 00000000..0a792709 Binary files /dev/null and b/internal/xz/testdata/xz-utils/bad-2-index-5.xz differ diff --git a/internal/xz/testdata/xz-utils/good-0-empty.xz b/internal/xz/testdata/xz-utils/good-0-empty.xz new file mode 100644 index 00000000..83b95e05 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-0-empty.xz differ diff --git a/internal/xz/testdata/xz-utils/good-0cat-empty.xz b/internal/xz/testdata/xz-utils/good-0cat-empty.xz new file mode 100644 index 00000000..e6fc3146 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-0cat-empty.xz differ diff --git a/internal/xz/testdata/xz-utils/good-0catpad-empty.xz b/internal/xz/testdata/xz-utils/good-0catpad-empty.xz new file mode 100644 index 00000000..4f86b7d1 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-0catpad-empty.xz differ diff --git a/internal/xz/testdata/xz-utils/good-0pad-empty.xz b/internal/xz/testdata/xz-utils/good-0pad-empty.xz new file mode 100644 index 00000000..c51e3a69 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-0pad-empty.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-3delta-lzma2.xz b/internal/xz/testdata/xz-utils/good-1-3delta-lzma2.xz new file mode 100644 index 00000000..a0be1d00 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-3delta-lzma2.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-block_header-1.xz b/internal/xz/testdata/xz-utils/good-1-block_header-1.xz new file mode 100644 index 00000000..fea5ad2f Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-block_header-1.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-block_header-2.xz b/internal/xz/testdata/xz-utils/good-1-block_header-2.xz new file mode 100644 index 00000000..6b5dcb34 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-block_header-2.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-block_header-3.xz b/internal/xz/testdata/xz-utils/good-1-block_header-3.xz new file mode 100644 index 00000000..15653120 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-block_header-3.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-check-crc32.xz b/internal/xz/testdata/xz-utils/good-1-check-crc32.xz new file mode 100644 index 00000000..6c89593d Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-check-crc32.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-check-crc64.xz b/internal/xz/testdata/xz-utils/good-1-check-crc64.xz new file mode 100644 index 00000000..5a9915d2 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-check-crc64.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-check-none.xz b/internal/xz/testdata/xz-utils/good-1-check-none.xz new file mode 100644 index 00000000..1e85faf3 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-check-none.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-check-sha256.xz b/internal/xz/testdata/xz-utils/good-1-check-sha256.xz new file mode 100644 index 00000000..fdc556b6 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-check-sha256.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-delta-lzma2.tiff.xz b/internal/xz/testdata/xz-utils/good-1-delta-lzma2.tiff.xz new file mode 100644 index 00000000..1f033bc5 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-delta-lzma2.tiff.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-lzma2-1.xz b/internal/xz/testdata/xz-utils/good-1-lzma2-1.xz new file mode 100644 index 00000000..d8d6489c Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-lzma2-1.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-lzma2-2.xz b/internal/xz/testdata/xz-utils/good-1-lzma2-2.xz new file mode 100644 index 00000000..7e8cdf1b Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-lzma2-2.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-lzma2-3.xz b/internal/xz/testdata/xz-utils/good-1-lzma2-3.xz new file mode 100644 index 00000000..c4c72be6 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-lzma2-3.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-lzma2-4.xz b/internal/xz/testdata/xz-utils/good-1-lzma2-4.xz new file mode 100644 index 00000000..e0d623a0 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-lzma2-4.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-lzma2-5.xz b/internal/xz/testdata/xz-utils/good-1-lzma2-5.xz new file mode 100644 index 00000000..339d1c30 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-lzma2-5.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-sparc-lzma2.xz b/internal/xz/testdata/xz-utils/good-1-sparc-lzma2.xz new file mode 100644 index 00000000..4532bc61 Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-sparc-lzma2.xz differ diff --git a/internal/xz/testdata/xz-utils/good-1-x86-lzma2.xz b/internal/xz/testdata/xz-utils/good-1-x86-lzma2.xz new file mode 100644 index 00000000..8053917b Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-1-x86-lzma2.xz differ diff --git a/internal/xz/testdata/xz-utils/good-2-lzma2.xz b/internal/xz/testdata/xz-utils/good-2-lzma2.xz new file mode 100644 index 00000000..bed5085c Binary files /dev/null and b/internal/xz/testdata/xz-utils/good-2-lzma2.xz differ diff --git a/internal/xz/testdata/xz-utils/unsupported-block_header.xz b/internal/xz/testdata/xz-utils/unsupported-block_header.xz new file mode 100644 index 00000000..38304429 Binary files /dev/null and b/internal/xz/testdata/xz-utils/unsupported-block_header.xz differ diff --git a/internal/xz/testdata/xz-utils/unsupported-check.xz b/internal/xz/testdata/xz-utils/unsupported-check.xz new file mode 100644 index 00000000..c28355e7 Binary files /dev/null and b/internal/xz/testdata/xz-utils/unsupported-check.xz differ diff --git a/internal/xz/testdata/xz-utils/unsupported-filter_flags-1.xz b/internal/xz/testdata/xz-utils/unsupported-filter_flags-1.xz new file mode 100644 index 00000000..48b93731 Binary files /dev/null and b/internal/xz/testdata/xz-utils/unsupported-filter_flags-1.xz differ diff --git a/internal/xz/testdata/xz-utils/unsupported-filter_flags-2.xz b/internal/xz/testdata/xz-utils/unsupported-filter_flags-2.xz new file mode 100644 index 00000000..c283359d Binary files /dev/null and b/internal/xz/testdata/xz-utils/unsupported-filter_flags-2.xz differ diff --git a/internal/xz/testdata/xz-utils/unsupported-filter_flags-3.xz b/internal/xz/testdata/xz-utils/unsupported-filter_flags-3.xz new file mode 100644 index 00000000..26084984 Binary files /dev/null and b/internal/xz/testdata/xz-utils/unsupported-filter_flags-3.xz differ -- cgit v1.3.1