diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2013-06-26 13:30:57 +0300 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2013-06-26 13:31:19 +0300 |
commit | e11888a79a4a77a69afde60445880d44f63d01aa (patch) | |
tree | 3bcb4b8d2771a37dba97772a509a9ee282312720 /src | |
parent | Build: Require Automake 1.12 and use serial-tests option. (diff) | |
download | xz-e11888a79a4a77a69afde60445880d44f63d01aa.tar.xz |
xz: Check the value of lzma_stream_flags.version in --list.
It is a no-op for now, but if an old xz version is used
together with a newer liblzma that supports something new,
then this check becomes important and will stop the old xz
from trying to parse files that it won't understand.
Diffstat (limited to '')
-rw-r--r-- | src/xz/list.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/xz/list.c b/src/xz/list.c index 0771475c..0e73d519 100644 --- a/src/xz/list.c +++ b/src/xz/list.c @@ -203,6 +203,20 @@ parse_indexes(xz_file_info *xfi, file_pair *pair) goto error; } + // Check that the Stream Footer doesn't specify something + // that we don't support. This can only happen if the xz + // version is older than liblzma and liblzma supports + // something new. + // + // It is enough to check Stream Footer. Stream Header must + // match when it is compared against Stream Footer with + // lzma_stream_flags_compare(). + if (footer_flags.version != 0) { + message_error("%s: %s", pair->src_name, + message_strm(LZMA_OPTIONS_ERROR)); + goto error; + } + // Check that the size of the Index field looks sane. lzma_vli index_size = footer_flags.backward_size; if ((lzma_vli)(pos) < index_size + LZMA_STREAM_HEADER_SIZE) { |