aboutsummaryrefslogtreecommitdiff
path: root/lib/lz4.c
diff options
context:
space:
mode:
authortest4973 <Kdo4973@hotmail.com>2018-04-05 19:05:49 -0700
committertest4973 <Kdo4973@hotmail.com>2018-04-05 19:09:24 -0700
commitf9992fa37f1b0810c4d0a3e3e6a0eb4880168c57 (patch)
treef13671714b43fc71ff09f087a04c8a6abd9a0a0e /lib/lz4.c
parent038a0d95bfe2d3a544aa2f5551998f6fd8bc0722 (diff)
downloadlz4-f9992fa37f1b0810c4d0a3e3e6a0eb4880168c57.tar.gz
noticed a bug when re-using hash table
./fuzzer -vv -s4217 -t7518
Diffstat (limited to 'lib/lz4.c')
-rw-r--r--lib/lz4.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/lz4.c b/lib/lz4.c
index 4fb54f8e..54336c7f 100644
--- a/lib/lz4.c
+++ b/lib/lz4.c
@@ -593,6 +593,9 @@ LZ4_FORCE_INLINE void LZ4_prepareTable(
MEM_INIT(cctx->hashTable, 0, LZ4_HASHTABLESIZE);
cctx->currentOffset = 0;
cctx->tableType = clearedTable;
+ } else {
+ DEBUGLOG(4, "Re-use hash table (no reset)");
+ //if (tableType == byU32) cctx->currentOffset += 64 KB;
}
}
/* If the current offset is zero, we will never look in the external
@@ -1098,8 +1101,6 @@ static int LZ4_compress_destSize_generic(
forwardH = LZ4_hashPosition(forwardIp, tableType);
LZ4_putPositionOnHash(ip, h, ctx->hashTable, tableType, base);
- DEBUGLOG(2, "match:%p , ip:%p", match, ip);
-
} while ( ((tableType==byU16) ? 0 : (match + MAX_DISTANCE < ip))
|| (LZ4_read32(match) != LZ4_read32(ip)) );
}
@@ -1371,7 +1372,7 @@ int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, const char* source, ch
LZ4_prepareTable(streamPtr, inputSize, tableType, usingDictCtx);
result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, tableType, usingDictCtx, noDictIssue, acceleration);
}
- } else {
+ } else { /* no dictCtx */
LZ4_prepareTable(streamPtr, inputSize, tableType, usingExtDict);
if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) {
result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, tableType, usingExtDict, dictSmall, acceleration);