From b9566fc558830de2a3fd486961b674774c17b74e Mon Sep 17 00:00:00 2001 From: binhdvo Date: Wed, 2 Feb 2022 15:12:48 -0500 Subject: [PATCH] Add rails for huffman table log calculation (#3047) --- lib/compress/huf_compress.c | 5 ++++- lib/compress/zstd_compress.c | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/compress/huf_compress.c b/lib/compress/huf_compress.c index d1b98afd..a8677733 100644 --- a/lib/compress/huf_compress.c +++ b/lib/compress/huf_compress.c @@ -1224,7 +1224,10 @@ static size_t HUF_compressCTable_internal( unsigned HUF_optimalTableLog(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue) { - return FSE_optimalTableLog_internal(maxTableLog, srcSize, maxSymbolValue, 1); + unsigned tableLog = FSE_optimalTableLog_internal(maxTableLog, srcSize, maxSymbolValue, 1); + assert(tableLog <= HUF_TABLELOG_MAX); + + return tableLog; } typedef struct { diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index eda38480..37b6e2ff 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -3112,6 +3112,7 @@ static size_t ZSTD_buildBlockEntropyStats_literals(void* const src, size_t srcSi /* Build Huffman Tree */ ZSTD_memset(nextHuf->CTable, 0, sizeof(nextHuf->CTable)); huffLog = HUF_optimalTableLog(huffLog, srcSize, maxSymbolValue); + assert(huffLog <= LitHufLog); { size_t const maxBits = HUF_buildCTable_wksp((HUF_CElt*)nextHuf->CTable, countWksp, maxSymbolValue, huffLog, nodeWksp, nodeWkspSize);