From: Lasse Collin Date: Wed, 23 Jan 2008 21:43:00 +0000 (+0200) Subject: Fix decoding of empty Metadata Blocks, that don't have X-Git-Tag: upstream/5.1.3~797 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=db9df0a9609c01a00a227329fb96e983971040f5;p=platform%2Fupstream%2Fxz.git Fix decoding of empty Metadata Blocks, that don't have even the Metadata Flags field. Earlier the code allowed such files; now they are prohibited as the file format specification requires. --- diff --git a/src/liblzma/common/metadata_decoder.c b/src/liblzma/common/metadata_decoder.c index 8ff4e25..579b0a5 100644 --- a/src/liblzma/common/metadata_decoder.c +++ b/src/liblzma/common/metadata_decoder.c @@ -127,6 +127,8 @@ process(lzma_coder *coder, lzma_allocator *allocator) if (coder->buffer[coder->buffer_pos] & 0x70) return LZMA_HEADER_ERROR; + coder->todo_count = 0; + // If Size of Header Metadata is present, prepare the // variable for variable-length integer decoding. Otherwise // set it to LZMA_VLI_VALUE_UNKNOWN to indicate that the @@ -535,7 +537,7 @@ metadata_decoder_init(lzma_next_coder *next, lzma_allocator *allocator, metadata->extra = NULL; next->coder->sequence = SEQ_FLAGS; - next->coder->todo_count = 0; + next->coder->todo_count = 1; next->coder->pos = 0; next->coder->tmp = 0; next->coder->metadata = metadata;