mirror of
https://github.com/facebook/zstd.git
synced 2025-10-09 00:05:28 -04:00
fixed minor issue on decoding invalid data
This commit is contained in:
parent
6b5198fe3a
commit
352ab88aea
@ -1530,12 +1530,14 @@ size_t FSE_initDStream(FSE_DStream_t* bitD, const void* srcBuffer, size_t srcSiz
|
|||||||
*/
|
*/
|
||||||
static size_t FSE_lookBits(FSE_DStream_t* bitD, U32 nbBits)
|
static size_t FSE_lookBits(FSE_DStream_t* bitD, U32 nbBits)
|
||||||
{
|
{
|
||||||
return ((bitD->bitContainer << (bitD->bitsConsumed & ((sizeof(bitD->bitContainer)*8)-1))) >> 1) >> (((sizeof(bitD->bitContainer)*8)-1)-nbBits);
|
const U32 bitMask = sizeof(bitD->bitContainer)*8 - 1;
|
||||||
|
return ((bitD->bitContainer << (bitD->bitsConsumed & bitMask)) >> 1) >> ((bitMask-nbBits) & bitMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t FSE_lookBitsFast(FSE_DStream_t* bitD, U32 nbBits) /* only if nbBits >= 1 !! */
|
static size_t FSE_lookBitsFast(FSE_DStream_t* bitD, U32 nbBits) /* only if nbBits >= 1 !! */
|
||||||
{
|
{
|
||||||
return (bitD->bitContainer << (bitD->bitsConsumed & ((sizeof(bitD->bitContainer)*8)-1))) >> ((sizeof(bitD->bitContainer)*8)-nbBits);
|
const U32 bitMask = sizeof(bitD->bitContainer)*8 - 1;
|
||||||
|
return (bitD->bitContainer << (bitD->bitsConsumed & bitMask)) >> (-nbBits & bitMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FSE_skipBits(FSE_DStream_t* bitD, U32 nbBits)
|
static void FSE_skipBits(FSE_DStream_t* bitD, U32 nbBits)
|
||||||
|
@ -1389,7 +1389,7 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState)
|
|||||||
if (ZSTD_32bits()) FSE_reloadDStream(&(seqState->DStream));
|
if (ZSTD_32bits()) FSE_reloadDStream(&(seqState->DStream));
|
||||||
nbBits = offsetCode - 1;
|
nbBits = offsetCode - 1;
|
||||||
if (offsetCode==0) nbBits = 0; /* cmove */
|
if (offsetCode==0) nbBits = 0; /* cmove */
|
||||||
offset = ((size_t)1 << nbBits) + FSE_readBits(&(seqState->DStream), nbBits);
|
offset = ((size_t)1 << (nbBits & ((sizeof(offset)*8)-1))) + FSE_readBits(&(seqState->DStream), nbBits);
|
||||||
if (ZSTD_32bits()) FSE_reloadDStream(&(seqState->DStream));
|
if (ZSTD_32bits()) FSE_reloadDStream(&(seqState->DStream));
|
||||||
if (offsetCode==0) offset = prevOffset;
|
if (offsetCode==0) offset = prevOffset;
|
||||||
}
|
}
|
||||||
|
@ -616,7 +616,7 @@ int main(int argc, char** argv)
|
|||||||
|
|
||||||
/* Modify Nb Iterations */
|
/* Modify Nb Iterations */
|
||||||
case 'i':
|
case 'i':
|
||||||
if ((argument[1] >='1') && (argument[1] <='9'))
|
if ((argument[1] >='0') && (argument[1] <='9'))
|
||||||
{
|
{
|
||||||
int iters = argument[1] - '0';
|
int iters = argument[1] - '0';
|
||||||
BMK_SetNbIterations(iters);
|
BMK_SetNbIterations(iters);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user