From: Sen Huang Date: Thu, 7 Nov 2019 21:24:55 +0000 (-0500) Subject: Fix static analyze error, use proper bounds for dictEnd X-Git-Tag: v1.4.5^2~157^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9c475f3b3e7e22d8f78d2b9c501ccf875d8d81f;p=thirdparty%2Fzstd.git Fix static analyze error, use proper bounds for dictEnd --- diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index 247470e5d..89c34d5e1 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -2772,8 +2772,9 @@ size_t ZSTD_loadCEntropy(ZSTD_compressedBlockState_t* bs, void* workspace, short* offcodeNCount, unsigned* offcodeMaxValue, const void* const dict, size_t dictSize) { - const BYTE* dictPtr = (const BYTE*)dict + 8; /* skip magic num and dict ID */ + const BYTE* dictPtr = (const BYTE*)dict; /* skip magic num and dict ID */ const BYTE* const dictEnd = dictPtr + dictSize; + dictPtr += 8; { unsigned maxSymbolValue = 255; size_t const hufHeaderSize = HUF_readCTable((HUF_CElt*)bs->entropy.huf.CTable, &maxSymbolValue, dictPtr, dictEnd-dictPtr); diff --git a/lib/dictBuilder/zdict.c b/lib/dictBuilder/zdict.c index de8576af3..9cee71beb 100644 --- a/lib/dictBuilder/zdict.c +++ b/lib/dictBuilder/zdict.c @@ -107,14 +107,15 @@ size_t ZDICT_getDictHeaderSize(const void* dictBuffer, size_t dictSize) { size_t headerSize; unsigned offcodeMaxValue = MaxOff; ZSTD_compressedBlockState_t* bs = (ZSTD_compressedBlockState_t*)malloc(sizeof(ZSTD_compressedBlockState_t)); + if (!bs) return ERROR(memory_allocation); U32* wksp = (U32*)malloc(HUF_WORKSPACE_SIZE); + if (!wksp) return ERROR(memory_allocation); short* offcodeNCount = (short*)malloc((MaxOff+1)*sizeof(short)); - if (!bs || !wksp || !offcodeNCount) { - return ERROR(memory_allocation); - } + if (!offcodeNCount) return ERROR(memory_allocation); ZSTD_reset_compressedBlockState(bs); headerSize = ZSTD_loadCEntropy(bs, wksp, offcodeNCount, &offcodeMaxValue, dictBuffer, dictSize); + free(bs); free(wksp); free(offcodeNCount);