From: senhuang42 Date: Tue, 17 Nov 2020 15:13:22 +0000 (-0500) Subject: Modification to offset validation to include entire sequence X-Git-Tag: v1.4.7~30^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d6d7ba2a1f5d0b4dabd3817a0252611e9c1aa2d7;p=thirdparty%2Fzstd.git Modification to offset validation to include entire sequence --- diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index 069835b23..fbd4a80fa 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -4561,11 +4561,10 @@ static size_t ZSTD_copySequencesToSeqStoreBlockDelim(seqStore_t* seqStore, ZSTD_ updatedRepcodes = ZSTD_updateRep(updatedRepcodes.rep, offCode, ll0); DEBUGLOG(6, "Storing sequence: (of: %u, ml: %u, ll: %u)", offCode, matchLength, litLength); - seqPos->posInSrc += litLength; + seqPos->posInSrc += litLength + matchLength; FORWARD_IF_ERROR(ZSTD_validateSequence(offCode, matchLength, seqPos->posInSrc, cctx->appliedParams.cParams.windowLog, dictSize), "Sequence validation failed"); - seqPos->posInSrc += matchLength; ZSTD_storeSeq(seqStore, litLength, ip, iend, offCode, matchLength - MINMATCH); ip += matchLength + litLength; } @@ -4682,11 +4681,10 @@ static size_t ZSTD_copySequencesToSeqStore(seqStore_t* seqStore, ZSTD_sequencePo updatedRepcodes = ZSTD_updateRep(updatedRepcodes.rep, offCode, ll0); } - seqPos->posInSrc += litLength; + seqPos->posInSrc += litLength + matchLength; FORWARD_IF_ERROR(ZSTD_validateSequence(offCode, matchLength, seqPos->posInSrc, cctx->appliedParams.cParams.windowLog, dictSize), "Sequence validation failed"); - seqPos->posInSrc += matchLength; DEBUGLOG(6, "Storing sequence: (of: %u, ml: %u, ll: %u)", offCode, matchLength, litLength); ZSTD_storeSeq(seqStore, litLength, ip, iend, offCode, matchLength - MINMATCH); ip += matchLength + litLength; diff --git a/tests/fuzz/sequence_compression_api b/tests/fuzz/sequence_compression_api new file mode 100755 index 000000000..7ff7f55c5 Binary files /dev/null and b/tests/fuzz/sequence_compression_api differ