From 2c5fe958e4bbe9b147b10c255955dfe2827fb8e7 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 25 Jan 2009 01:35:56 +0200 Subject: [PATCH] Fix a dumb bug in Block decoder, which made it return LZMA_DATA_ERROR with valid data. The bug was added in e114502b2bc371e4a45449832cb69be036360722. --- src/liblzma/common/block_decoder.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/liblzma/common/block_decoder.c b/src/liblzma/common/block_decoder.c index b130f567..59a20bfa 100644 --- a/src/liblzma/common/block_decoder.c +++ b/src/liblzma/common/block_decoder.c @@ -131,15 +131,15 @@ block_decode(lzma_coder *coder, lzma_allocator *allocator, case SEQ_PADDING: // Compressed Data is padded to a multiple of four bytes. while (coder->compressed_size & 3) { + if (*in_pos >= in_size) + return LZMA_OK; + // We use compressed_size here just get the Padding // right. The actual Compressed Size was stored to // coder->block already, and won't be modified by // us anymore. ++coder->compressed_size; - if (*in_pos >= in_size) - return LZMA_OK; - if (in[(*in_pos)++] != 0x00) return LZMA_DATA_ERROR; }