]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Adding test and null check for malloc
authorBimba Shrestha <bimbashrestha@fb.com>
Mon, 23 Sep 2019 22:08:18 +0000 (15:08 -0700)
committerBimba Shrestha <bimbashrestha@fb.com>
Mon, 23 Sep 2019 22:08:18 +0000 (15:08 -0700)
lib/compress/zstd_compress.c
tests/fuzzer.c

index e7ec1d61f0e395c71d2a6c84afec34912eb71bca..8eb29289497d59d41ad52b1c6e07c2f06a78bedd 100644 (file)
@@ -2321,8 +2321,10 @@ size_t ZSTD_getSequences(ZSTD_CCtx* zc, ZSTD_Sequence* outSeqs,
 {
     const size_t dstCapacity = ZSTD_compressBound(srcSize);
     void* dst = ZSTD_malloc(dstCapacity, ZSTD_defaultCMem);
-
     SeqCollector seqCollector;
+
+    assert(dst != NULL);
+
     seqCollector.collectSequences = 1;
     seqCollector.seqStart = outSeqs;
     seqCollector.seqIndex = 0;
index a513e1b40cfb4039e8f4998e0ac600b2f137e63e..349f0d19b0143ab66844bc7624944e36a0452324 100644 (file)
@@ -1962,11 +1962,29 @@ static int basicUnitTests(U32 const seed, double compressibility)
 
     {
         ZSTD_CCtx* cctx = ZSTD_createCCtx();
-        assert(cctx != NULL);
+        size_t zerosLength = ZSTD_BLOCKSIZE_MAX * 2 - 1;
+        size_t expectedOffsets[] = {1, 1};
+        size_t expectedLitLengths[] = {2, 1};
+        size_t expectedMatchLengths[] = {ZSTD_BLOCKSIZE_MAX - 2, ZSTD_BLOCKSIZE_MAX - 2};
+        size_t expectedReps[] = {1, 1};
+        size_t expectedMatchPos[] = {2, 1};
+        size_t expectedSequencesSize = 2;
+        size_t sequencesSize;
+        size_t i = 0;
+        ZSTD_Sequence* sequences = (ZSTD_Sequence*)compressedBuffer;
         DISPLAYLEVEL(3, "test%3i : ZSTD_getSequences zeros : ", testNb++);
-        memset(CNBuffer, 0, 1000000);
-        assert(ZSTD_getSequences(cctx, (ZSTD_Sequence*)compressedBuffer, 1000000,
-            CNBuffer, 1000000) == 1000000 / 131071 + 1);
+        assert(cctx != NULL);
+        memset(CNBuffer, 0, zerosLength);
+        sequencesSize = ZSTD_getSequences(cctx, sequences, 10,
+            CNBuffer, zerosLength);
+        assert(sequencesSize == expectedSequencesSize);
+        for (i = 0; i < sequencesSize; ++i) {
+            assert(sequences[i].offset == expectedOffsets[i]);
+            assert(sequences[i].litLength == expectedLitLengths[i]);
+            assert(sequences[i].matchLength == expectedMatchLengths[i]);
+            assert(sequences[i].rep == expectedReps[i]);
+            assert(sequences[i].matchPos == expectedMatchPos[i]);
+        }
         ZSTD_freeCCtx(cctx);
     }