From 48405b46336007bcaa810e7a0f4af41d78ff9a2e Mon Sep 17 00:00:00 2001 From: senhuang42 Date: Tue, 10 Nov 2020 15:33:33 -0500 Subject: [PATCH] Fix srcSize=0 edge case --- lib/compress/zstd_compress.c | 10 ++++++++++ 1 file changed, 10 insertions(+) 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; -- 2.47.3