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.
This commit is contained in:
Lasse Collin 2008-01-23 23:43:00 +02:00
parent 765f0b05f6
commit db9df0a960
1 changed files with 3 additions and 1 deletions

View File

@ -127,6 +127,8 @@ process(lzma_coder *coder, lzma_allocator *allocator)
if (coder->buffer[coder->buffer_pos] & 0x70) if (coder->buffer[coder->buffer_pos] & 0x70)
return LZMA_HEADER_ERROR; return LZMA_HEADER_ERROR;
coder->todo_count = 0;
// If Size of Header Metadata is present, prepare the // If Size of Header Metadata is present, prepare the
// variable for variable-length integer decoding. Otherwise // variable for variable-length integer decoding. Otherwise
// set it to LZMA_VLI_VALUE_UNKNOWN to indicate that the // 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; metadata->extra = NULL;
next->coder->sequence = SEQ_FLAGS; next->coder->sequence = SEQ_FLAGS;
next->coder->todo_count = 0; next->coder->todo_count = 1;
next->coder->pos = 0; next->coder->pos = 0;
next->coder->tmp = 0; next->coder->tmp = 0;
next->coder->metadata = metadata; next->coder->metadata = metadata;