From 2730251d914cf9655f757738f37246b3262ef4e9 Mon Sep 17 00:00:00 2001 From: Binh Vo Date: Wed, 2 Feb 2022 10:17:58 -0500 Subject: [PATCH] Add rails for huffman table log calculation --- lib/compress/huf_compress.c | 6 +++++- lib/compress/zstd_compress.c | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/compress/huf_compress.c b/lib/compress/huf_compress.c index d1b98afdb42..1879d173365 100644 --- a/lib/compress/huf_compress.c +++ b/lib/compress/huf_compress.c @@ -1224,7 +1224,11 @@ 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 <= maxTableLog || maxTableLog == 0); + assert(tableLog <= HUF_TABLELOG_MAX); + + return tableLog; } typedef struct { diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index c8290157022..2553f1cf5da 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -3110,6 +3110,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);