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.
This commit is contained in:
parent
9376f5f8f7
commit
84d2da6c9d
|
@ -230,6 +230,20 @@ parse_indexes(xz_file_info *xfi, file_pair *pair)
|
||||||
goto error;
|
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.
|
// Check that the size of the Index field looks sane.
|
||||||
lzma_vli index_size = footer_flags.backward_size;
|
lzma_vli index_size = footer_flags.backward_size;
|
||||||
if ((lzma_vli)(pos) < index_size + LZMA_STREAM_HEADER_SIZE) {
|
if ((lzma_vli)(pos) < index_size + LZMA_STREAM_HEADER_SIZE) {
|
||||||
|
|
Loading…
Reference in New Issue