From: Yann Collet Date: Thu, 13 Sep 2018 19:29:52 +0000 (-0700) Subject: fixed msan error X-Git-Tag: v0.0.29~13^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d195eec97e124eff513e4a254c1faa47ba450c9f;p=thirdparty%2Fzstd.git fixed msan error cold dictionary is detected through a comparison with dictEnd, which was not initialized at the beginning of first DCtx usage. --- diff --git a/lib/decompress/zstd_decompress.c b/lib/decompress/zstd_decompress.c index 0f02540fc..9d7408336 100644 --- a/lib/decompress/zstd_decompress.c +++ b/lib/decompress/zstd_decompress.c @@ -206,6 +206,7 @@ static void ZSTD_initDCtx_internal(ZSTD_DCtx* dctx) dctx->maxWindowSize = ZSTD_MAXWINDOWSIZE_DEFAULT; dctx->ddict = NULL; dctx->ddictLocal = NULL; + dctx->dictEnd = NULL; dctx->ddictIsCold = 0; dctx->inBuff = NULL; dctx->inBuffSize = 0; diff --git a/tests/zstreamtest.c b/tests/zstreamtest.c index 0e0fbe0c9..96136a625 100644 --- a/tests/zstreamtest.c +++ b/tests/zstreamtest.c @@ -135,34 +135,34 @@ typedef struct { size_t filled; } buffer_t; -static const buffer_t g_nullBuffer = { NULL, 0 , 0 }; +static const buffer_t kBuffNull = { NULL, 0 , 0 }; + +static void FUZ_freeDictionary(buffer_t dict) +{ + free(dict.start); +} static buffer_t FUZ_createDictionary(const void* src, size_t srcSize, size_t blockSize, size_t requestedDictSize) { - buffer_t dict = { NULL, 0, 0 }; + buffer_t dict = kBuffNull; size_t const nbBlocks = (srcSize + (blockSize-1)) / blockSize; - size_t* const blockSizes = (size_t*) malloc(nbBlocks * sizeof(size_t)); - if (!blockSizes) return dict; + size_t* const blockSizes = (size_t*)malloc(nbBlocks * sizeof(size_t)); + if (!blockSizes) return kBuffNull; dict.start = malloc(requestedDictSize); - if (!dict.start) { free(blockSizes); return dict; } + if (!dict.start) { free(blockSizes); return kBuffNull; } { size_t nb; for (nb=0; nb