diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2014-08-05 22:15:07 +0300 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2014-08-05 22:15:07 +0300 |
commit | 9adbc2ff373f979c917cdfd3679ce0ebd59f1040 (patch) | |
tree | 349413a0553526c75edf16c77470878ef781494b /src/liblzma/common/stream_decoder.c | |
parent | liblzma: Add support for lzma_block.ignore_check. (diff) | |
download | xz-9adbc2ff373f979c917cdfd3679ce0ebd59f1040.tar.xz |
liblzma: Add support for LZMA_IGNORE_CHECK.
Diffstat (limited to '')
-rw-r--r-- | src/liblzma/common/stream_decoder.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/liblzma/common/stream_decoder.c b/src/liblzma/common/stream_decoder.c index 5243e4c6..3ab938c9 100644 --- a/src/liblzma/common/stream_decoder.c +++ b/src/liblzma/common/stream_decoder.c @@ -57,6 +57,10 @@ struct lzma_coder_s { /// If true, LZMA_GET_CHECK is returned after decoding Stream Header. bool tell_any_check; + /// If true, we will tell the Block decoder to skip calculating + /// and verifying the integrity check. + bool ignore_check; + /// If true, we will decode concatenated Streams that possibly have /// Stream Padding between or after them. LZMA_STREAM_END is returned /// once the application isn't giving us any new input, and we aren't @@ -182,8 +186,8 @@ stream_decode(lzma_coder *coder, const lzma_allocator *allocator, coder->pos = 0; - // Version 0 is currently the only possible version. - coder->block_options.version = 0; + // Version 1 is needed to support the .ignore_check option. + coder->block_options.version = 1; // Set up a buffer to hold the filter chain. Block Header // decoder will initialize all members of this array so @@ -195,6 +199,11 @@ stream_decode(lzma_coder *coder, const lzma_allocator *allocator, return_if_error(lzma_block_header_decode(&coder->block_options, allocator, coder->buffer)); + // If LZMA_IGNORE_CHECK was used, this flag needs to be set. + // It has to be set after lzma_block_header_decode() because + // it always resets this to false. + coder->block_options.ignore_check = coder->ignore_check; + // Check the memory usage limit. const uint64_t memusage = lzma_raw_decoder_memusage(filters); lzma_ret ret; @@ -433,6 +442,7 @@ lzma_stream_decoder_init( next->coder->tell_unsupported_check = (flags & LZMA_TELL_UNSUPPORTED_CHECK) != 0; next->coder->tell_any_check = (flags & LZMA_TELL_ANY_CHECK) != 0; + next->coder->ignore_check = (flags & LZMA_IGNORE_CHECK) != 0; next->coder->concatenated = (flags & LZMA_CONCATENATED) != 0; next->coder->first_stream = true; |