Renamed the test files from .lzma suffix to .xz suffix.

This commit is contained in:
Lasse Collin 2008-09-30 17:43:55 +03:00
parent 8e60c889a2
commit 4c321a41c4
59 changed files with 66 additions and 68 deletions

View File

@ -1,26 +1,26 @@
.lzma Test Files .xz Test Files
---------------- ----------------
0. Introduction 0. Introduction
This directory contains bunch of files to test handling of .lzma files This directory contains bunch of files to test handling of .xz files
in .lzma decoder implementations. Many of the files have been created 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 by hand with a hex editor, thus there is no better "source code" than
the files themselves. All the test files (*.lzma) and this README have the files themselves. All the test files (*.xz) and this README have
been put into the public domain. been put into the public domain.
1. File Types 1. File Types
Good files (good-*.lzma) must decode successfully without requiring Good files (good-*.xz) must decode successfully without requiring
a lot of CPU time or RAM. a lot of CPU time or RAM.
Unsupported files (unsupported-*.lzma) are good files, but headers Unsupported files (unsupported-*.xz) are good files, but headers
indicate features not supported by the current file format indicate features not supported by the current file format
specification. specification.
Bad files (bad-*.lzma) must cause the decoder to give an error. Like 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 with the good files, these files must not require a lot of CPU time
or RAM before they get detected to be broken. or RAM before they get detected to be broken.
@ -29,82 +29,82 @@
2.1. Good Files 2.1. Good Files
good-0-empty.lzma has one Stream with no Blocks. good-0-empty.xz has one Stream with no Blocks.
good-0pad-empty.lzma has one Stream with no Blocks followed by good-0pad-empty.xz has one Stream with no Blocks followed by
four-byte Stream Padding. four-byte Stream Padding.
good-0cat-empty.lzma has two zero-Block Streams concatenated without good-0cat-empty.xz has two zero-Block Streams concatenated without
Stream Padding. Stream Padding.
good-0catpad-empty.lzma has two zero-Block Streams concatenated with good-0catpad-empty.xz has two zero-Block Streams concatenated with
four-byte Stream Padding between the Streams. four-byte Stream Padding between the Streams.
good-1-check-none.lzma has one Stream with one Block with two good-1-check-none.xz has one Stream with one Block with two
uncompressed LZMA2 chunks and no integrity check. uncompressed LZMA2 chunks and no integrity check.
good-1-check-crc32.lzma has one Stream with one Block with two good-1-check-crc32.xz has one Stream with one Block with two
uncompressed LZMA2 chunks and CRC32 check. uncompressed LZMA2 chunks and CRC32 check.
good-1-check-crc64.lzma is like good-1-check-crc32.lzma but with CRC64. good-1-check-crc64.xz is like good-1-check-crc32.xz but with CRC64.
good-1-check-sha256.lzma is like good-1-check-crc32.lzma but with good-1-check-sha256.xz is like good-1-check-crc32.xz but with
SHA256. SHA256.
good-2-lzma2.lzma has one Stream with two Blocks with one uncompressed good-2-lzma2.xz has one Stream with two Blocks with one uncompressed
LZMA2 chunk in each Block. LZMA2 chunk in each Block.
good-1-block_header-1.lzma has both Compressed Size and Uncompressed 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 Size in the Block Header. This has also four extra bytes of Header
Padding. Padding.
good-1-block_header-2.lzma has known Compressed Size. good-1-block_header-2.xz has known Compressed Size.
good-1-block_header-3.lzma has known Uncompressed Size. good-1-block_header-3.xz has known Uncompressed Size.
good-1-delta-lzma2.tiff.lzma is an image file that compresses good-1-delta-lzma2.tiff.xz is an image file that compresses
better with Delta+LZMA2 than with plain LZMA2. better with Delta+LZMA2 than with plain LZMA2.
good-1-x86-lzma2.lzma uses the x86 filter (BCJ) and LZMA2. The good-1-x86-lzma2.xz uses the x86 filter (BCJ) and LZMA2. The
uncompressed file is compress_prepared_bcj_x86 found from the tests uncompressed file is compress_prepared_bcj_x86 found from the tests
directory. directory.
good-1-sparc-lzma2.lzma uses the SPARC filter and LZMA. The good-1-sparc-lzma2.xz uses the SPARC filter and LZMA. The
uncompressed file is compress_prepared_bcj_sparc found from the tests uncompressed file is compress_prepared_bcj_sparc found from the tests
directory. directory.
good-1-lzma2-1.lzma has two LZMA2 chunks, of which the second sets good-1-lzma2-1.xz has two LZMA2 chunks, of which the second sets
new properties. new properties.
good-1-lzma2-2.lzma has two LZMA2 chunks, of which the second resets good-1-lzma2-2.xz has two LZMA2 chunks, of which the second resets
the state without specifying new properties. the state without specifying new properties.
good-1-lzma2-3.lzma has two LZMA2 chunks, of which the first is 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 uncompressed and the second is LZMA. The first chunk resets dictionary
and the second sets new properties. and the second sets new properties.
good-1-3delta-lzma2.lzma has three Delta filters and LZMA2. good-1-3delta-lzma2.xz has three Delta filters and LZMA2.
2.2. Unsupported Files 2.2. Unsupported Files
unsupported-check.lzma uses Check ID 0x02 which isn't supported by unsupported-check.xz uses Check ID 0x02 which isn't supported by
the current version of the file format. It is implementation-defined the current version of the file format. It is implementation-defined
how this file handled (it may reject it, or decode it possibly with how this file handled (it may reject it, or decode it possibly with
a warning). a warning).
unsupported-block_header.lzma has a non-nul byte in Header Padding, unsupported-block_header.xz has a non-nul byte in Header Padding,
which may indicate presence of a new unsupported field. which may indicate presence of a new unsupported field.
unsupported-filter_flags-1.lzma has unsupported Filter ID 0x7F. unsupported-filter_flags-1.xz has unsupported Filter ID 0x7F.
unsupported-filter_flags-2.lzma specifies only Delta filter in the 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 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 the chain. It could be a little more correct to detect this file as
corrupt instead of unsupported, but saying it is unsupported is corrupt instead of unsupported, but saying it is unsupported is
simpler in case of liblzma. simpler in case of liblzma.
unsupported-filter_flags-3.lzma specifies two LZMA2 filters in the 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 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 chain. It could be a little more correct to detect this file as
corrupt instead of unsupported, but saying it is unsupported is corrupt instead of unsupported, but saying it is unsupported is
@ -113,106 +113,106 @@
2.3. Bad Files 2.3. Bad Files
bad-0pad-empty.lzma has one Stream with no Blocks followed by bad-0pad-empty.xz has one Stream with no Blocks followed by
five-byte Stream Padding. Stream Padding must be a multiple of four five-byte Stream Padding. Stream Padding must be a multiple of four
bytes, thus this file is corrupt. bytes, thus this file is corrupt.
bad-0catpad-empty.lzma has two zero-Block Streams concatenated with bad-0catpad-empty.xz has two zero-Block Streams concatenated with
five-byte Stream Padding between the Streams. five-byte Stream Padding between the Streams.
bad-0cat-alone.lzma is good-0-empty.lzma concatenated with an empty bad-0cat-alone.xz is good-0-empty.xz concatenated with an empty
LZMA_Alone file. LZMA_Alone file.
bad-0cat-header_magic.lzma is good-0cat-empty.lzma but with one byte 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 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 gives LZMA_DATA_ERROR for this. (LZMA_FORMAT_ERROR is used only if
the first Stream of a file has invalid Header Magic Bytes.) the first Stream of a file has invalid Header Magic Bytes.)
bad-0-header_magic.lzma is good-0-empty.lzma but with one byte wrong 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 in the Header Magic Bytes field. liblzma gives LZMA_FORMAT_ERROR for
this. this.
bad-0-footer_magic.lzma is good-0-empty.lzma but with one byte wrong 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 in the Footer Magic Bytes field. liblzma gives LZMA_DATA_ERROR for
this. this.
bad-0-empty-truncated.lzma is good-0-empty.lzma without the last byte bad-0-empty-truncated.xz is good-0-empty.xz without the last byte
of the file. of the file.
bad-0-nonempty_index.lzma has no Blocks but Index claims that there is bad-0-nonempty_index.xz has no Blocks but Index claims that there is
one Block. one Block.
bad-0-backward_size.lzma has wrong Backward Size in Stream Footer. bad-0-backward_size.xz has wrong Backward Size in Stream Footer.
bad-1-stream_flags-1.lzma has different Stream Flags in Stream Header bad-1-stream_flags-1.xz has different Stream Flags in Stream Header
and Stream Footer. and Stream Footer.
bad-1-stream_flags-2.lzma has wrong CRC32 in Stream Header. bad-1-stream_flags-2.xz has wrong CRC32 in Stream Header.
bad-1-stream_flags-3.lzma has wrong CRC32 in Stream Footer. bad-1-stream_flags-3.xz has wrong CRC32 in Stream Footer.
bad-1-vli-1.lzma has two-byte variable-length integer in the 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 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 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 big integer encoding instead of due to Uncompressed Size not matching
the value stored in the Block Header. That is, the decoder must not the value stored in the Block Header. That is, the decoder must not
try to decode the Compressed Data field. try to decode the Compressed Data field.
bad-1-vli-2.lzma has ten-byte variable-length integer as Uncompressed 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 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 to too big integer encoding instead of due to Uncompressed Size not
matching the value stored in the Block Header. That is, the decoder matching the value stored in the Block Header. That is, the decoder
must not try to decode the Compressed Data field. must not try to decode the Compressed Data field.
bad-1-block_header-1.lzma has Block Header that ends in the middle of bad-1-block_header-1.xz has Block Header that ends in the middle of
the Filter Flags field. the Filter Flags field.
bad-1-block_header-2.lzma has Block Header that has Compressed Size and bad-1-block_header-2.xz has Block Header that has Compressed Size and
Uncompressed Size but no List of Filter Flags field. Uncompressed Size but no List of Filter Flags field.
bad-1-block_header-3.lzma has wrong CRC32 in Block Header. bad-1-block_header-3.xz has wrong CRC32 in Block Header.
bad-1-block_header-4.lzma has too big Compressed Size (2^63 bytes while bad-1-block_header-4.xz has too big Compressed Size (2^63 bytes while
maximum is 2^63 - 4 bytes) in Block Header. It's important that the maximum is 2^63 - 4 bytes) in Block Header. It's important that the
file gets rejected due to invalid Compressed Size value; the decoder file gets rejected due to invalid Compressed Size value; the decoder
must not try decoding the Compressed Data field. must not try decoding the Compressed Data field.
bad-2-index-1.lzma has wrong Total Sizes in Index. bad-2-index-1.xz has wrong Total Sizes in Index.
bad-2-index-2.lzma has wrong Uncompressed Sizes in Index. bad-2-index-2.xz has wrong Uncompressed Sizes in Index.
bad-2-index-3.lzma has non-nul byte in Index Padding. bad-2-index-3.xz has non-nul byte in Index Padding.
bad-2-index-4.lzma wrong CRC32 in Index. bad-2-index-4.xz wrong CRC32 in Index.
bad-2-compressed_data_padding.lzma has non-nul byte in the padding of bad-2-compressed_data_padding.xz has non-nul byte in the padding of
the Compressed Data field of the first Block. the Compressed Data field of the first Block.
bad-1-check-crc32.lzma has wrong Check (CRC32). bad-1-check-crc32.xz has wrong Check (CRC32).
bad-1-check-crc64.lzma has wrong Check (CRC64). bad-1-check-crc64.xz has wrong Check (CRC64).
bad-1-check-sha256.lzma has wrong Check (SHA-256). bad-1-check-sha256.xz has wrong Check (SHA-256).
bad-1-lzma2-1.lzma has LZMA2 stream whose first chunk (uncompressed) bad-1-lzma2-1.xz has LZMA2 stream whose first chunk (uncompressed)
doesn't reset the dictionary. doesn't reset the dictionary.
bad-1-lzma2-2.lzma has two LZMA2 chunks, of which the second chunk bad-1-lzma2-2.xz has two LZMA2 chunks, of which the second chunk
indicates dictionary reset, but the LZMA compressed data tries to indicates dictionary reset, but the LZMA compressed data tries to
repeat data from the previous chunk. repeat data from the previous chunk.
bad-1-lzma2-3.lzma sets new invalid properties (lc=8, lp=0, pb=0) in bad-1-lzma2-3.xz sets new invalid properties (lc=8, lp=0, pb=0) in
the middle of Block. the middle of Block.
bad-1-lzma2-4.lzma has two LZMA2 chunks, of which the first is 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 uncompressed and the second is LZMA. The first chunk resets dictionary
as it should, but the second chunk tries to reset state without as it should, but the second chunk tries to reset state without
specifying properties for LZMA. specifying properties for LZMA.
bad-1-lzma2-5.lzma is like bad-1-lzma2-4.lzma but doesn't try to reset 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. anything in the header of the second chunk.
bad-1-lzma2-6.lzma has reserved LZMA2 control byte value (0x03). bad-1-lzma2-6.xz has reserved LZMA2 control byte value (0x03).
bad-1-lzma2-7.lzma has EOPM at LZMA level. bad-1-lzma2-7.xz has EOPM at LZMA level.

View File

@ -16,7 +16,7 @@
# #
############################################################################### ###############################################################################
for I in "$srcdir"/files/good-*.lzma for I in "$srcdir"/files/good-*.xz
do do
if ../src/lzmadec/lzmadec "$I" > /dev/null 2> /dev/null ; then if ../src/lzmadec/lzmadec "$I" > /dev/null 2> /dev/null ; then
: :
@ -27,7 +27,7 @@ do
fi fi
done done
for I in "$srcdir"/files/bad-*.lzma for I in "$srcdir"/files/bad-*.xz
do do
if ../src/lzmadec/lzmadec "$I" > /dev/null 2> /dev/null ; then if ../src/lzmadec/lzmadec "$I" > /dev/null 2> /dev/null ; then
echo "Bad file succeeded: $I" echo "Bad file succeeded: $I"
@ -36,7 +36,5 @@ do
fi fi
done done
# TODO: Test malicious files too, but with care.
(exit 0) (exit 0)
exit 0 exit 0