fixed new MIN_CBLOCK_SIZE
parent
3742219b4e
commit
bc4c8aa4b7
|
@ -351,14 +351,14 @@ size_t ZSTD_decodeLiteralsBlock(ZSTD_DCtx* dctx,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (litSize > srcSize-11) /* risk of reading beyond src buffer with wildcopy */
|
if (litSize+WILDCOPY_OVERLENGTH > srcSize) /* risk reading beyond src buffer with wildcopy */
|
||||||
{
|
{
|
||||||
if (litSize > srcSize-lhSize) return ERROR(corruption_detected);
|
if (litSize > srcSize-lhSize) return ERROR(corruption_detected);
|
||||||
memcpy(dctx->litBuffer, istart+lhSize, litSize);
|
memcpy(dctx->litBuffer, istart+lhSize, litSize);
|
||||||
dctx->litPtr = dctx->litBuffer;
|
dctx->litPtr = dctx->litBuffer;
|
||||||
dctx->litBufSize = BLOCKSIZE+8;
|
dctx->litBufSize = BLOCKSIZE+8;
|
||||||
dctx->litSize = litSize;
|
dctx->litSize = litSize;
|
||||||
return litSize+lhSize;
|
return lhSize+litSize;
|
||||||
}
|
}
|
||||||
/* direct reference into compressed stream */
|
/* direct reference into compressed stream */
|
||||||
dctx->litPtr = istart+lhSize;
|
dctx->litPtr = istart+lhSize;
|
||||||
|
|
|
@ -94,7 +94,9 @@ static const size_t ZSTD_frameHeaderSize_min = 5;
|
||||||
#define MaxSeq MAX(MaxLL, MaxML)
|
#define MaxSeq MAX(MaxLL, MaxML)
|
||||||
|
|
||||||
#define MIN_SEQUENCES_SIZE (2 /*seqNb*/ + 2 /*dumps*/ + 3 /*seqTables*/ + 1 /*bitStream*/)
|
#define MIN_SEQUENCES_SIZE (2 /*seqNb*/ + 2 /*dumps*/ + 3 /*seqTables*/ + 1 /*bitStream*/)
|
||||||
#define MIN_CBLOCK_SIZE (3 /*litCSize*/ + MIN_SEQUENCES_SIZE)
|
#define MIN_CBLOCK_SIZE (1 /*litCSize*/ + MIN_SEQUENCES_SIZE)
|
||||||
|
|
||||||
|
#define WILDCOPY_OVERLENGTH 8
|
||||||
|
|
||||||
typedef enum { bt_compressed, bt_raw, bt_rle, bt_end } blockType_t;
|
typedef enum { bt_compressed, bt_raw, bt_rle, bt_end } blockType_t;
|
||||||
|
|
||||||
|
@ -106,7 +108,7 @@ static void ZSTD_copy8(void* dst, const void* src) { memcpy(dst, src, 8); }
|
||||||
|
|
||||||
#define COPY8(d,s) { ZSTD_copy8(d,s); d+=8; s+=8; }
|
#define COPY8(d,s) { ZSTD_copy8(d,s); d+=8; s+=8; }
|
||||||
|
|
||||||
/*! ZSTD_wildcopy : custom version of memcpy(), can copy up to 7-8 bytes too many */
|
/*! ZSTD_wildcopy : custom version of memcpy(), can copy up to 7 bytes too many (8 bytes if length==0) */
|
||||||
MEM_STATIC void ZSTD_wildcopy(void* dst, const void* src, size_t length)
|
MEM_STATIC void ZSTD_wildcopy(void* dst, const void* src, size_t length)
|
||||||
{
|
{
|
||||||
const BYTE* ip = (const BYTE*)src;
|
const BYTE* ip = (const BYTE*)src;
|
||||||
|
|
Loading…
Reference in New Issue