diff --git a/lib/decompress/zstd_decompress.c b/lib/decompress/zstd_decompress.c index 6999966a3..d02638109 100644 --- a/lib/decompress/zstd_decompress.c +++ b/lib/decompress/zstd_decompress.c @@ -1543,7 +1543,7 @@ static void ZSTD_DCtx_updateOversizedDuration(ZSTD_DStream* zds, size_t const ne { if (ZSTD_DCtx_isOverflow(zds, neededInBuffSize, neededOutBuffSize)) zds->oversizedDuration++; - else + else zds->oversizedDuration = 0; } @@ -1750,7 +1750,7 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB { int const tooSmall = (zds->inBuffSize < neededInBuffSize) || (zds->outBuffSize < neededOutBuffSize); int const tooLarge = ZSTD_DCtx_isOversizedTooLong(zds); - + if (tooSmall || tooLarge) { size_t const bufferSize = neededInBuffSize + neededOutBuffSize; DEBUGLOG(4, "inBuff : from %u to %u", diff --git a/lib/zstd.h b/lib/zstd.h index 9f9f991f3..572f5063b 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -1701,8 +1701,8 @@ ZSTDLIB_API size_t ZSTD_DCtx_setMaxWindowSize(ZSTD_DCtx* dctx, size_t maxWindowS * Experimental parameter. * Default is 0 == disabled. Set to 1 to enable * - * Tells the decompressor to skip checksum validation during decompression, regardless. - * of whether or not checksumming was specified during decompression. This offers some + * Tells the decompressor to skip checksum validation during decompression, regardless + * of whether checksumming was specified during compression. This offers some * slight performance benefits, and may be useful for debugging. */ #define ZSTD_d_forceIgnoreChecksum ZSTD_d_experimentalParam3 diff --git a/programs/zstdcli.c b/programs/zstdcli.c index 1aea63dca..b7e7d1fda 100644 --- a/programs/zstdcli.c +++ b/programs/zstdcli.c @@ -196,6 +196,7 @@ static void usage_advanced(const char* programName) DISPLAYOUT( " -l : print information about zstd compressed files \n"); DISPLAYOUT( "--test : test compressed file integrity \n"); DISPLAYOUT( " -M# : Set a memory usage limit for decompression \n"); + DISPLAYOUT( "--no-check : disable validation of checksums in compressed frame \n"); # if ZSTD_SPARSE_DEFAULT DISPLAYOUT( "--[no-]sparse : sparse mode (default: enabled on file, disabled on stdout) \n"); # else diff --git a/tests/fuzzer.c b/tests/fuzzer.c index 4f0676ab7..7f8d9f654 100644 --- a/tests/fuzzer.c +++ b/tests/fuzzer.c @@ -554,8 +554,10 @@ static int basicUnitTests(U32 const seed, double compressibility) ZSTD_freeCCtx(cctx); } { /* copy the compressed buffer and corrupt the checksum */ - char* corruptedChecksumCompressedBuffer = (char*)malloc(cSize); - if (!corruptedChecksumCompressedBuffer) { + size_t r; + char* const corruptedChecksumCompressedBuffer = (char*)malloc(cSize); + ZSTD_DCtx* const dctx = ZSTD_createDCtx(); + if (!corruptedChecksumCompressedBuffer || !dctx) { DISPLAY("Not enough memory, aborting\n"); testResult = 1; goto _end; @@ -563,11 +565,10 @@ static int basicUnitTests(U32 const seed, double compressibility) memcpy(corruptedChecksumCompressedBuffer, compressedBuffer, cSize); corruptedChecksumCompressedBuffer[cSize-1] += 1; - size_t r = ZSTD_decompress(decodedBuffer, CNBuffSize, corruptedChecksumCompressedBuffer, cSize); + r = ZSTD_decompress(decodedBuffer, CNBuffSize, corruptedChecksumCompressedBuffer, cSize); if (!ZSTD_isError(r)) goto _output_error; if (ZSTD_getErrorCode(r) != ZSTD_error_checksum_wrong) goto _output_error; - ZSTD_DCtx* dctx = ZSTD_createDCtx(); assert(dctx != NULL); CHECK_Z(ZSTD_DCtx_setForceIgnoreChecksum(dctx, ZSTD_d_ignoreChecksum)); r = ZSTD_decompressDCtx(dctx, decodedBuffer, CNBuffSize, corruptedChecksumCompressedBuffer, cSize); if (ZSTD_isError(r)) goto _output_error;