fix NULL ptr arithmetic of lz4:1572
was blindly adding an offset (0) to `dictionary` which could be `NULL`.
This commit is contained in:
parent
8e46846287
commit
c2c0c47d5f
10
lib/lz4.c
10
lib/lz4.c
@ -1568,12 +1568,12 @@ int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream,
|
|||||||
int acceleration)
|
int acceleration)
|
||||||
{
|
{
|
||||||
const tableType_t tableType = byU32;
|
const tableType_t tableType = byU32;
|
||||||
LZ4_stream_t_internal* streamPtr = &LZ4_stream->internal_donotuse;
|
LZ4_stream_t_internal* const streamPtr = &LZ4_stream->internal_donotuse;
|
||||||
const BYTE* dictEnd = streamPtr->dictionary + streamPtr->dictSize;
|
const BYTE* dictEnd = streamPtr->dictSize ? streamPtr->dictionary + streamPtr->dictSize : streamPtr->dictionary;
|
||||||
|
|
||||||
DEBUGLOG(5, "LZ4_compress_fast_continue (inputSize=%i)", inputSize);
|
DEBUGLOG(5, "LZ4_compress_fast_continue (inputSize=%i)", inputSize);
|
||||||
|
|
||||||
LZ4_renormDictT(streamPtr, inputSize); /* avoid index overflow */
|
LZ4_renormDictT(streamPtr, inputSize); /* fix index overflow */
|
||||||
if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT;
|
if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT;
|
||||||
if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX;
|
if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX;
|
||||||
|
|
||||||
@ -1587,7 +1587,7 @@ int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check overlapping input/dictionary space */
|
/* Check overlapping input/dictionary space */
|
||||||
{ const BYTE* sourceEnd = (const BYTE*) source + inputSize;
|
{ const BYTE* const sourceEnd = (const BYTE*)source + inputSize;
|
||||||
if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) {
|
if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) {
|
||||||
streamPtr->dictSize = (U32)(dictEnd - sourceEnd);
|
streamPtr->dictSize = (U32)(dictEnd - sourceEnd);
|
||||||
if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB;
|
if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB;
|
||||||
@ -1623,7 +1623,7 @@ int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream,
|
|||||||
} else {
|
} else {
|
||||||
result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingDictCtx, noDictIssue, acceleration);
|
result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingDictCtx, noDictIssue, acceleration);
|
||||||
}
|
}
|
||||||
} else {
|
} else { /* small data <= 4 KB */
|
||||||
if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) {
|
if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) {
|
||||||
result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, dictSmall, acceleration);
|
result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, dictSmall, acceleration);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user