liblzma: Fix decoding of LZMA2 streams having no uncompressed data.

The decoder considered empty LZMA2 streams to be corrupt.
This shouldn't matter much with .xz files, because no encoder
creates empty LZMA2 streams in .xz. This bug is more likely
to cause problems in applications that use raw LZMA2 streams.
This commit is contained in:
Lasse Collin 2011-03-31 11:54:48 +03:00
parent 40277998cb
commit 0d21f49a80
1 changed files with 4 additions and 4 deletions

View File

@ -67,6 +67,10 @@ lzma2_decode(lzma_coder *restrict coder, lzma_dict *restrict dict,
const uint32_t control = in[*in_pos];
++*in_pos;
// End marker
if (control == 0x00)
return LZMA_STREAM_END;
if (control >= 0xE0 || control == 1) {
// Dictionary reset implies that next LZMA chunk has
// to set new properties.
@ -104,10 +108,6 @@ lzma2_decode(lzma_coder *restrict coder, lzma_dict *restrict dict,
&coder->options);
}
} else {
// End marker
if (control == 0x00)
return LZMA_STREAM_END;
// Invalid control values
if (control > 2)
return LZMA_DATA_ERROR;