From: senhuang42 Date: Tue, 10 Nov 2020 20:33:33 +0000 (-0500) Subject: Fix srcSize=0 edge case X-Git-Tag: v1.4.7~30^2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=48405b46336007bcaa810e7a0f4af41d78ff9a2e;p=thirdparty%2Fzstd.git Fix srcSize=0 edge case --- diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index c19b243c9..98890c4d0 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -4694,6 +4694,16 @@ static size_t ZSTD_compressSequences_internal(void* dst, size_t dstCapacity, BYTE* op = (BYTE*)dst; DEBUGLOG(4, "ZSTD_compressSequences_internal srcSize: %zu, inSeqsSize: %zu", srcSize, inSeqsSize); + /* Special case: empty frame */ + if (remaining == 0) { + U32 const cBlockHeader24 = 1 /* last block */ + (((U32)bt_raw)<<1); + RETURN_ERROR_IF(dstCapacity<4, dstSize_tooSmall, "No room for empty frame block header"); + MEM_writeLE32(op, cBlockHeader24); + op += ZSTD_blockHeaderSize; + dstCapacity -= ZSTD_blockHeaderSize; + cSize += ZSTD_blockHeaderSize; + } + while (remaining) { U32 cBlockSize; int additionalByteAdjustment;