]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Add Repcode Bounds Check 1196/head
authorW. Felix Handte <w@felixhandte.com>
Thu, 21 Jun 2018 19:25:32 +0000 (15:25 -0400)
committerW. Felix Handte <w@felixhandte.com>
Thu, 21 Jun 2018 19:54:41 +0000 (15:54 -0400)
lib/compress/zstd_opt.c

index 7bd7941d806e84f4ce73e8e94d262966761cdea6..476cdc148920d355a7869a3929be0fc3297297a6 100644 (file)
@@ -561,7 +561,8 @@ U32 ZSTD_insertBtAndGetAllMatches (
                     repLen = (U32)ZSTD_count_2segments(ip+minMatch, repMatch+minMatch, iLimit, dictEnd, prefixStart) + minMatch;
                 }
                 if (dictMode == ZSTD_dictMatchState
-                  && ((U32)((dictLimit-1) - repIndex) >= 3) /* intentional overflow : do not test positions overlapping 2 memory segments */
+                  && ( ((repOffset-1) /*intentional overflow*/ < current - (dmsLowLimit + dmsIndexDelta))  /* equivalent to `current > repIndex >= dmsLowLimit` */
+                     & ((U32)((dictLimit-1) - repIndex) >= 3) ) /* intentional overflow : do not test positions overlapping 2 memory segments */
                   && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) {
                     repLen = (U32)ZSTD_count_2segments(ip+minMatch, repMatch+minMatch, iLimit, dmsEnd, prefixStart) + minMatch;
             }   }