]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixed minor corner case
authorYann Collet <cyan@fb.com>
Tue, 18 Oct 2016 00:28:28 +0000 (17:28 -0700)
committerYann Collet <cyan@fb.com>
Tue, 18 Oct 2016 00:28:28 +0000 (17:28 -0700)
lib/decompress/zstd_decompress.c

index 990a649101c328d5316359133e4a51558e9ab71f..00b069e9fdd8a7f8cef22fd52ec36e216ce750c7 100644 (file)
@@ -807,7 +807,8 @@ static seq_t ZSTD_decodeSequence(seqState_t* seqState)
         if (ofCode <= 1) {
             offset += (llCode==0);
             if (offset) {
-                size_t const temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset];
+                size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset];
+                temp += !temp;   /* 0 is not valid; input is corrupted; force offset to 1 */
                 if (offset != 1) seqState->prevOffset[2] = seqState->prevOffset[1];
                 seqState->prevOffset[1] = seqState->prevOffset[0];
                 seqState->prevOffset[0] = offset = temp;