]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fix uasan dictionary_stream_round_trip fuzz test
authorYann Collet <yann.collet.73@gmail.com>
Mon, 5 Feb 2024 08:36:10 +0000 (00:36 -0800)
committerYann Collet <yann.collet.73@gmail.com>
Mon, 5 Feb 2024 08:36:10 +0000 (00:36 -0800)
lib/compress/zstd_opt.c
tests/Makefile

index 20a30406a319a182f48f0253d4abb8b139b39ad3..eed3319299e8978be6aa54387ac5360d50750b03 100644 (file)
@@ -267,6 +267,7 @@ static U32 ZSTD_rawLiteralsCost(const BYTE* const literals, U32 const litLength,
                                 const optState_t* const optPtr,
                                 int optLevel)
 {
+    DEBUGLOG(8, "ZSTD_rawLiteralsCost (%u literals)", litLength);
     if (litLength == 0) return 0;
 
     if (!ZSTD_compressedLiterals(optPtr))
@@ -1204,7 +1205,7 @@ ZSTD_compressBlock_opt_generic(ZSTD_matchState_t* ms,
                     opt[cur] = opt[cur-1];
                     opt[cur].litlen = litlen;
                     opt[cur].price = price;
-                    if ((optLevel == 2) /* additional check only for high modes */
+                    if ( (optLevel == 2) /* additional check only for high modes */
                       && (prevMatch.litlen == 0) /* interrupt a match */
                       && (LL_INCPRICE(1) < 0) /* ll1 is cheaper than ll0 */
                     ) {
@@ -1278,7 +1279,8 @@ ZSTD_compressBlock_opt_generic(ZSTD_matchState_t* ms,
                                 inr-istart, cur, nbMatches, longestML);
 
                     if ( (longestML > sufficient_len)
-                      || (cur + longestML >= ZSTD_OPT_NUM) ) {
+                      || (cur + longestML >= ZSTD_OPT_NUM)
+                      || (ip + cur + longestML >= iend) ) {
                         lastStretch.mlen = longestML;
                         lastStretch.off = matches[nbMatches-1].off;
                         lastStretch.litlen = 0;
index c31e7500558a4631f355db91b9abc0d546ca9c7b..2f33e1d0f0b69f30cde46052752acb21893657a6 100644 (file)
@@ -251,8 +251,9 @@ checkTag.o : $(ZSTDDIR)/zstd.h
 clean:
        $(MAKE) -C $(ZSTDDIR) clean
        $(MAKE) -C $(PRGDIR) clean
-       $(RM) -fR $(TESTARTEFACT)
-       $(RM) -rf tmp*  # some test directories are named tmp*
+       $(MAKE) -C fuzz clean
+       $(RM) -R $(TESTARTEFACT)
+       $(RM) -r tmp*  # some test directories are named tmp*
        $(RM) $(CLEAN) core *.o *.tmp result* *.gcda dictionary *.zst \
         $(PRGDIR)/zstd$(EXT) $(PRGDIR)/zstd32$(EXT) \
         fullbench-dll$(EXT) fuzzer-dll$(EXT) zstreamtest-dll$(EXT)