diff options
author | Yann Collet <cyan@fb.com> | 2017-10-04 22:24:08 (GMT) |
---|---|---|
committer | Yann Collet <cyan@fb.com> | 2017-10-04 22:24:08 (GMT) |
commit | 87968517f926b55c2af3cf39e9692b368c566103 (patch) | |
tree | 3c11fc98d4f94798031495504228bc7cbef8fa9c /lib/lz4frame.c | |
parent | f6b31bf0d082315103d2fb5fc8f2094be567bb63 (diff) | |
download | lz4-87968517f926b55c2af3cf39e9692b368c566103.zip lz4-87968517f926b55c2af3cf39e9692b368c566103.tar.gz lz4-87968517f926b55c2af3cf39e9692b368c566103.tar.bz2 |
fixed decoding block checksum in lz4frame
Diffstat (limited to 'lib/lz4frame.c')
-rw-r--r-- | lib/lz4frame.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/lz4frame.c b/lib/lz4frame.c index 4df404c..3adbdd9 100644 --- a/lib/lz4frame.c +++ b/lib/lz4frame.c @@ -1268,12 +1268,11 @@ size_t LZ4F_decompress(LZ4F_dctx* dctx, if (dctx->frameInfo.contentChecksumFlag) XXH32_reset(&(dctx->xxh), 0); /* internal buffers allocation */ { size_t const bufferNeeded = dctx->maxBlockSize - + ((dctx->frameInfo.blockMode==LZ4F_blockLinked) * 128 KB) - + 4 /* block checksum */; + + ((dctx->frameInfo.blockMode==LZ4F_blockLinked) * 128 KB); if (bufferNeeded > dctx->maxBufferSize) { /* tmp buffers too small */ dctx->maxBufferSize = 0; /* ensure allocation will be re-attempted on next entry*/ FREEMEM(dctx->tmpIn); - dctx->tmpIn = (BYTE*)ALLOCATOR(dctx->maxBlockSize); + dctx->tmpIn = (BYTE*)ALLOCATOR(dctx->maxBlockSize + 4 /* block checksum */); if (dctx->tmpIn == NULL) return err0r(LZ4F_ERROR_allocation_failed); FREEMEM(dctx->tmpOutBuffer); @@ -1407,7 +1406,7 @@ size_t LZ4F_decompress(LZ4F_dctx* dctx, dctx->dStage = dstage_getBlockHeader; /* new block */ break; - case dstage_getCBlock: /* entry from dstage_decodeCBlockSize */ + case dstage_getCBlock: if ((size_t)(srcEnd-srcPtr) < dctx->tmpInTarget) { dctx->tmpInSize = 0; dctx->dStage = dstage_storeCBlock; |