Merge pull request #1380 from facebook/decodecorpus
fix decodecorpus incorrect frame generation
This commit is contained in:
@@ -975,7 +975,7 @@ static const U32 ML_base[MaxML+1] = {
|
|||||||
67, 83, 99, 0x83, 0x103, 0x203, 0x403, 0x803,
|
67, 83, 99, 0x83, 0x103, 0x203, 0x403, 0x803,
|
||||||
0x1003, 0x2003, 0x4003, 0x8003, 0x10003 };
|
0x1003, 0x2003, 0x4003, 0x8003, 0x10003 };
|
||||||
|
|
||||||
/* Hidden delcaration for fullbench */
|
/* Function required by fullbench; Hidden declaration to respect -Wmissing-prototypes */
|
||||||
size_t ZSTD_decodeSeqHeaders(ZSTD_DCtx* dctx, int* nbSeqPtr,
|
size_t ZSTD_decodeSeqHeaders(ZSTD_DCtx* dctx, int* nbSeqPtr,
|
||||||
const void* src, size_t srcSize);
|
const void* src, size_t srcSize);
|
||||||
|
|
||||||
@@ -993,7 +993,11 @@ size_t ZSTD_decodeSeqHeaders(ZSTD_DCtx* dctx, int* nbSeqPtr,
|
|||||||
|
|
||||||
/* SeqHead */
|
/* SeqHead */
|
||||||
nbSeq = *ip++;
|
nbSeq = *ip++;
|
||||||
if (!nbSeq) { *nbSeqPtr=0; return 1; }
|
if (!nbSeq) {
|
||||||
|
*nbSeqPtr=0;
|
||||||
|
if (srcSize != 1) return ERROR(srcSize_wrong);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
if (nbSeq > 0x7F) {
|
if (nbSeq > 0x7F) {
|
||||||
if (nbSeq == 0xFF) {
|
if (nbSeq == 0xFF) {
|
||||||
if (ip+2 > iend) return ERROR(srcSize_wrong);
|
if (ip+2 > iend) return ERROR(srcSize_wrong);
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -823,15 +823,14 @@ static size_t writeSequences(U32* seed, frame_t* frame, seqStore_t* seqStorePtr,
|
|||||||
else if (nbSeq < LONGNBSEQ) op[0] = (BYTE)((nbSeq>>8) + 0x80), op[1] = (BYTE)nbSeq, op+=2;
|
else if (nbSeq < LONGNBSEQ) op[0] = (BYTE)((nbSeq>>8) + 0x80), op[1] = (BYTE)nbSeq, op+=2;
|
||||||
else op[0]=0xFF, MEM_writeLE16(op+1, (U16)(nbSeq - LONGNBSEQ)), op+=3;
|
else op[0]=0xFF, MEM_writeLE16(op+1, (U16)(nbSeq - LONGNBSEQ)), op+=3;
|
||||||
|
|
||||||
/* seqHead : flags for FSE encoding type */
|
|
||||||
seqHead = op++;
|
|
||||||
|
|
||||||
if (nbSeq==0) {
|
if (nbSeq==0) {
|
||||||
frame->data = op;
|
frame->data = op;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* seqHead : flags for FSE encoding type */
|
||||||
|
seqHead = op++;
|
||||||
|
|
||||||
/* convert length/distances into codes */
|
/* convert length/distances into codes */
|
||||||
ZSTD_seqToCodes(seqStorePtr);
|
ZSTD_seqToCodes(seqStorePtr);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user