diff --git a/lib/zstd_compress.c b/lib/zstd_compress.c index b25291228..31d81ea2a 100644 --- a/lib/zstd_compress.c +++ b/lib/zstd_compress.c @@ -161,11 +161,11 @@ static unsigned ZSTD_highbit(U32 val); temporary work-around, while the compressor compatibility remains limited regarding windowLog < 18 */ size_t ZSTD_checkCParams_advanced(ZSTD_compressionParameters cParams, U64 srcSize) { - if (srcSize > (1U << ZSTD_WINDOWLOG_MIN)) return ZSTD_checkCParams(cParams); + if (srcSize > (1ULL << ZSTD_WINDOWLOG_MIN)) return ZSTD_checkCParams(cParams); if (cParams.windowLog < ZSTD_WINDOWLOG_ABSOLUTEMIN) return ERROR(compressionParameter_unsupported); - if (srcSize <= (1U << cParams.windowLog)) cParams.windowLog = ZSTD_WINDOWLOG_MIN; /* fake value - temporary work around */ - if (srcSize <= (1U << cParams.hashLog)) cParams.hashLog = ZSTD_HASHLOG_MIN; /* fake value - temporary work around */ - if (srcSize <= (1U << cParams.contentLog)) cParams.contentLog = ZSTD_CONTENTLOG_MIN; /* fake value - temporary work around */ + if (srcSize <= (1ULL << cParams.windowLog)) cParams.windowLog = ZSTD_WINDOWLOG_MIN; /* fake value - temporary work around */ + if (srcSize <= (1ULL << cParams.hashLog)) cParams.hashLog = ZSTD_HASHLOG_MIN; /* fake value - temporary work around */ + if (srcSize <= (1ULL << cParams.contentLog)) cParams.contentLog = ZSTD_CONTENTLOG_MIN; /* fake value - temporary work around */ return ZSTD_checkCParams(cParams); } diff --git a/programs/zbufftest.c b/programs/zbufftest.c index fd18c9e59..eba2c1510 100644 --- a/programs/zbufftest.c +++ b/programs/zbufftest.c @@ -220,11 +220,10 @@ static size_t findDiff(const void* buf1, const void* buf2, size_t max) #define CHECK(cond, ...) if (cond) { DISPLAY("Error => "); DISPLAY(__VA_ARGS__); \ DISPLAY(" (seed %u, test nb %u) \n", seed, testNb); goto _output_error; } -static const U32 maxSrcLog = 24; -static const U32 maxSampleLog = 19; - static int fuzzerTests(U32 seed, U32 nbTests, unsigned startTest, double compressibility) { + static const U32 maxSrcLog = 24; + static const U32 maxSampleLog = 19; BYTE* cNoiseBuffer[5]; BYTE* srcBuffer; size_t srcBufferSize = (size_t)1<= testNb) DISPLAYUPDATE(2, "/%6u ", nbTests); FUZ_rand(&coreSeed); lseed = coreSeed ^ prime1; - buffNb = FUZ_rand(&lseed) & 127; - if (buffNb & 7) buffNb=2; /* select buffer */ + buffNb = FUZ_rand(&lseed) & 0x7F; + if (buffNb & 7) buffNb=2; /* select srcBuffer */ else { buffNb >>= 3; if (buffNb & 7) { @@ -337,8 +337,8 @@ static int fuzzerTests(U32 seed, U32 nbTests, unsigned startTest, double compres cSize += genSize; totalTestSize += readSize; + /* random flush operation, to mess around */ if ((FUZ_rand(&lseed) & 15) == 0) { - /* add a few random flushes operations, to mess around */ sampleSizeLog = FUZ_rand(&lseed) % maxSampleLog; sampleSize = (size_t)1 << sampleSizeLog; sampleSize += FUZ_rand(&lseed) & (sampleSize-1); @@ -378,25 +378,22 @@ static int fuzzerTests(U32 seed, U32 nbTests, unsigned startTest, double compres CHECK (errorCode != 0, "frame not fully decoded"); CHECK (totalGenSize != totalTestSize, "decompressed data : wrong size") CHECK (totalCSize != cSize, "compressed data should be fully read") - crcDest = XXH64(dstBuffer, totalTestSize, 0); - if (crcDest!=crcOrig) findDiff(copyBuffer, dstBuffer, totalTestSize); - CHECK (crcDest!=crcOrig, "decompressed data corrupted"); + { U64 const crcDest = XXH64(dstBuffer, totalTestSize, 0); + if (crcDest!=crcOrig) findDiff(copyBuffer, dstBuffer, totalTestSize); + CHECK (crcDest!=crcOrig, "decompressed data corrupted"); } + + /*===== noisy/erroneous src decompression test =====*/ - /* noisy/erroneous src decompression test */ /* add some noise */ - nbChunks = (FUZ_rand(&lseed) & 7) + 2; - for (n=0; n cSize/3) sampleSize = cSize/3; - sampleStart = FUZ_rand(&lseed) % (srcBufferSize - sampleSize); - cStart = FUZ_rand(&lseed) % (cSize - sampleSize); - - memcpy(cBuffer+cStart, srcBuffer+sampleStart, sampleSize); - } + { U32 const nbNoiseChunks = (FUZ_rand(&lseed) & 7) + 2; + U32 nn; for (nn=0; nn