fixed frametest error
authorYann Collet <cyan@fb.com>
Sun, 6 May 2018 01:24:11 +0000 (18:24 -0700)
committerYann Collet <cyan@fb.com>
Sun, 6 May 2018 01:24:11 +0000 (18:24 -0700)
commitaf127334670a5e7b710bbd6adb71aa7c3ef0cd72
treebab2c44f789bcd9b92a80802ca4de791e60b6e17
parentd358e33faa87e0293f27f272a8579de73f4ba938
fixed frametest error

The error can be reproduced using following command :
./frametest -v -i100000000 -s1659 -t31096808

It's actually a bug in the stream LZ4 API,
when starting a new stream
and providing a first chunk to complete with size < MINMATCH.
In which case, the chunk becomes a dictionary.
No hash was generated and stored,
but the chunk is accessible as default position 0 points to dictStart,
and position 0 is still within MAX_DISTANCE.
Then, next attempt to read 32-bits from position 0 fails.

The issue would have been mitigated by starting from index 64 KB,
effectively eliminating position 0 as too far away.

The proper fix is to eliminate such "dictionary" as too small.
Which is what this patch does.
lib/lz4.c
lib/lz4frame.c
tests/frametest.c