Commit Graph

406 Commits

Author SHA1 Message Date
Yann Collet
c5d6f8a8be fix #783
LZ4_decompress_safe_partial()
now also supports a scenario where
nb_bytes_to_generate is <= block_decompressed_size
And
nb_bytes_to_read is >= block_compressed_size.

Previously, the only supported scenario was
nb_bytes_to_read == block_compress_size.

Pay attention that,
if nb_bytes_to_read is > block_compressed_size,
then, necessarily, it requires that
nb_bytes_to_generate is <= block_decompress_size.
If both are larger, it will generate corrupted data.
2020-08-27 00:17:57 -07:00
Yann Collet
3e3a006c6f Merge branch 'dev' into extraInput 2020-08-26 23:20:28 -07:00
Yann Collet
5b3f945310 fix test under non-interactive environment 2020-08-25 14:53:08 -07:00
Yann Collet
224735ea1b added more tests around --content-size
notably in association with `stdin`
2020-08-25 14:42:15 -07:00
Yann Collet
65f081ccaf use variables for program invocation 2020-08-25 14:25:51 -07:00
Yann Collet
f18dbeb8b5 Merge branch 'dev' into extraInput 2020-08-18 15:34:51 -07:00
Yann Collet
e9cfa49d0d Clarifies and fix EndMark
EndMark, the 4-bytes value indicating the end of frame,
must be `0x00000000`.

Previously, it was just mentioned as a `0-size` block.
But such definition could encompass uncompressed blocks of size 0,
with a header of value `0x80000000`.

But the intention was to also support uncompressed empty blocks.
They could be used as a keep-alive signal.
Note that compressed empty blocks are already supported,
it's just that they have a size 1 instead of 0 (for the `0` token).

Unfortunately, the decoder implementation was also wrong,
and would also interpret a `0x80000000` block header as an endMark.

This issue evaded detection so far simply because
this situation never happens, as LZ4Frame always issues
a clean 0x00000000 value as a endMark.
It also does not flush empty blocks.

This is fixed in this PR.
The decoder can now deal with empty uncompressed blocks,
and do not confuse them with EndMark.
The specification is also clarified.
Finally, FrameTest is updated to randomly insert empty blocks during fuzzing.
2020-08-12 17:27:33 -07:00
BellaXlp
ab713923a2
fix issue #783 (#862)
* fix issue #783
2020-08-12 14:42:10 -07:00
Yann Collet
f9f3fdfb1c added test decompress-partial with extraneous input bytes
fails currently,
for investigation of #783
2020-08-12 14:39:01 -07:00
Yann Collet
b26c140a54
Merge pull request #895 from lz4/hugefast
Fix #876
2020-08-10 12:52:32 -07:00
Yann Collet
b01c58000e add test that breaks --fast
with huge values, as expected from #876

Also : added target `check`
2020-08-10 10:54:35 -07:00
W. Felix Handte
9af86f0841 Remove dirty Field From LZ4_stream_t 2020-08-06 16:06:40 -04:00
Yann Collet
8ef649f3a8
Merge pull request #866 from sandyharvie/dev
Fix issue #865
2020-07-13 18:09:02 -07:00
Björn Ketelaars
7c57828096 Fix tests on OpenBSD
Add condition for OpenBSD, which uses gmake
2020-05-30 07:36:22 +02:00
Christopher Harvie
2a7203c05d add tests 2020-05-13 23:01:43 -04:00
Filipe Calasans
3f53227b96 Add test scenario test-lz4-multiple-legacy 2020-02-07 17:14:01 -08:00
Bimba Shrestha
dcdb9c73c0 Adding unamestr var 2019-10-07 08:12:42 -07:00
Bimba Shrestha
77e6ff1160 Adding condition for FreeBSD and using gmake 2019-10-04 10:12:22 -07:00
Bimba Shrestha
c0acce96c1 Using instead of gmake (to address the travis failure) 2019-10-04 09:29:58 -07:00
Bimba Shrestha
b2c1fa8c59 Using gmake instead of make 2019-10-04 08:40:46 -07:00
Yann Collet
fdf2ef5809 fixed test error
could trigger %0 on exceptional circumstances
due to wrong buffer size parameter.
2019-08-15 13:59:59 +02:00
Yann Collet
e18fbd51c1 silence msan warning when offset==0 2019-08-06 15:35:49 +02:00
Yann Collet
6654c2cd3b ensure conformance with custom LZ4_DISTANCE_MAX
It's now possible to select a custom LZ4_DISTANCE_MAX at compile time,
provided it's <= 65535.

However, in some cases (when compressing in byU16 mode),
the new distance wasn't respected,
as it used to implied that it was necessarily within range.

Added a distance check for this case.
Also : added a new TravisCI test which ensures that
custom LZ4_DISTANCE_MAX compiles correctly
and compresses correctly (relying on `assert()` to find outsized offsets).
2019-07-15 12:11:34 -07:00
Yann Collet
2cacdd2142 fix minor cppcheck warnings 2019-06-30 15:36:32 -07:00
Yann Collet
89e96e55ff updated frametest
so that noisy src decompression
doesn't generate output
nor fails when decompression fails (which is expected).
2019-06-30 14:57:12 -07:00
Yann Collet
4e87942529 frametest: added LZ4F decoder noise test 2019-06-30 13:59:49 -07:00
Yann Collet
3b917ef6e6 travisCI: added ASAN fuzzer tests
and fixed minor formatting warnings
2019-06-28 20:55:47 -07:00
Yann Collet
567b4e098b moved noisy-src decoder test into cBuffer_exact
so that it can also catch any potential read out-of-bound in the input buffer
(none reported so far, just a precaution for the future).
2019-06-28 20:23:12 -07:00
Yann Collet
62f59d562b fuzzer: added test to catch #738 2019-06-28 20:15:43 -07:00
Yann Collet
d82a22b3f1
Merge pull request #718 from lz4/fullbench
fullbench: added test scenario LZ4F_decompress_followHint
2019-05-31 15:18:12 -07:00
Yann Collet
33a04fb8bd fullbench: ensure decompressionFunction and dName are initialized
Visual Studio seems to miss that they are necessarily initialized in the switch() { case: }
2019-05-31 13:25:12 -07:00
Yann Collet
99f1721ff5 replaced while(1)
by for (;;)
just to please Visual Studio C4127 .
2019-05-31 12:01:33 -07:00
Yann Collet
89c97d5ea6 fullbench: added test scenario LZ4F_decompress_followHint
This emulates a streaming scenario,
where the caller follows rigorously the srcSize hints
provided as return value of LZ4F_decompress().

This is useful to show the issue in #714,
where data is uselessly copied in a tmp buffer first.
2019-05-30 17:29:51 -07:00
Yann Collet
6c69ae6bd6 added test case for in-place decompression
worst case, designed to make the decoder overwrite into input
2019-05-30 16:17:47 -07:00
Yann Collet
b2ba857a4f fuzzer: changed internal buffer size
to ensure no overflow during unit tests
2019-05-29 13:33:55 -07:00
Yann Collet
45eba5b030 one more conversion warning 2019-05-29 13:17:45 -07:00
Yann Collet
76116495bf some more minor conversion warnings fixes 2019-05-29 13:14:52 -07:00
Yann Collet
c5bcb4d68b fixed minor conversion warning 2019-05-29 12:56:27 -07:00
Yann Collet
b17f578a91 added comments and macros for in-place (de)compression 2019-05-29 12:06:13 -07:00
Yann Collet
4fc6b48550 added test case for in-place compression 2019-05-29 11:19:10 -07:00
gabrielstedman
729eef61a1 Handle file not existing case #704 2019-05-26 15:04:45 +01:00
Yann Collet
e2527ad725 updated tests
- only play listTest with `make test`, not `make all` which is limited to build
- update `clangtest`, so that it's possible to disable O3 optimization, for faster processing
2019-05-16 16:46:16 -07:00
gstedman
81081f9b2d List mode improvements.
Improve formatting
  Include static assert
  Use UTIL_fseek to handle potential fseek limitation
  Be explicit when refusing to read from stdin
  Properly free dctx after use
  Include valgrind tests
2019-05-16 20:53:29 +01:00
gstedman
98a86c8ef6 Add multiframe report to --list command 2019-05-15 21:13:19 +01:00
Dmitry V. Levin
0d3f85df65 test-amalgamation: split the rule
Change test-amalgamation to follow each-rule-makes-a-single-target idiom.

Fixes: a7e8d394 ("[amalgamation] add test")
2019-04-23 21:18:11 +00:00
Dmitry V. Levin
8069d2ae6f test-amalgamation: fix compilation options
Use the same compilation options to compile lz4_all.c and other object files.

Fixes: a7e8d394 ("[amalgamation] add test")
2019-04-23 21:18:11 +00:00
Dmitry V. Levin
10726d4c56 test-amalgamation: use a single cat command
Use the list of prerequisites instead of listing those files manually,
this way they will never fall out of sync.

Also update the amalgamation example to use a single cat command.

Fixes: a7e8d394 ("[amalgamation] add test")
Fixes: b192c86b ("[amalgamation] lz4frame.c")
2019-04-23 21:18:11 +00:00
Dmitry V. Levin
7937e86255 test-amalgamation: fix the list of prerequisites
Add $(LZ4DIR)/lz4frame.c to the list of prerequisites as the rule uses
that file.

Fixes: b192c86b ("[amalgamation] lz4frame.c")
2019-04-23 21:18:11 +00:00
JPeterMugaas
7136489d33 More build imrpvements
Moved a few other tests to Makefiles.inc.  Other things might need to go there.
Made a test for symlink appropriateness.  Windows can NOT handle them the same way Unix-like operating systems do (if at all).  This is mostly the same as the Visual C projects.
embed version info into .dll and .exes that are redistributed.
2019-04-23 07:44:00 -04:00
Yann Collet
291b3d8b7e
Merge pull request #691 from lz4/list
--list
2019-04-22 17:43:01 -07:00
Yann Collet
c4fe7a2047
Merge pull request #689 from JPeterMugaas/jpm-makefile
Jpm makefile - as described in https://github.com/lz4/lz4/issues/688
2019-04-22 15:29:50 -07:00
Yann Collet
0d4c885abb refactored --list function
better handling of special conditions,
better scoping of variables.

Also : updated man page
2019-04-22 14:01:19 -07:00
JPeterMugaas
2acddd9918 Fix a test for mingw 2019-04-22 16:06:04 -04:00
JPeterMugaas
b48f823f90 Try to put some tests I made in ONE place. I also moved a test for "install" in one place to try to isolate it. 2019-04-22 15:48:48 -04:00
JPeterMugaas
773b66547f Initial commits from diff I submitted earlier 2019-04-22 13:48:59 -04:00
Yann Collet
22fae16c6f ensure tests work when stdout is not the console
ensure this case is continuously tested on travis.

Update documentation on implicit output,
invite to not rely on implicit output in scripts.
2019-04-21 17:01:03 -07:00
Yann Collet
467e352de9 tests/Makefile : created CMP variable
for potential redirection, if need be.

note : should probably converge all comparison operations onto CMP
2019-04-21 12:42:13 -07:00
Yann Collet
5f8ac02b77 cli: display a warning whenever default output is stdout while input != stdin
This behavior has been preserved for compatibility with existing ecosystem.
But it's problematic, as some environment start `lz4` without identifying stdout as console by default,
leading to a change of behavior for a same line of script.

A more sensible policy would be to default to stdout only when input is stdin.

Soft change for the time being : keep the behavior, just print a warning message.
User should prefer `-c` to explicitly select `stdout`.

Also : updated tests in Makefile to explicitly select `stdout` with `-c`.
2019-04-19 17:08:40 -07:00
Yann Collet
ae199124e5 fixed read-after input in LZ4_decompress_safe() 2019-04-18 18:50:51 -07:00
Yann Collet
4790994568 fuzzer : reduced stack usage 2019-04-18 17:12:14 -07:00
Yann Collet
6cb084ed36 fuzzer: reduce stack usage to please Visual static analyzer 2019-04-18 17:01:36 -07:00
Yann Collet
0b876db6d4 address a few minor Visual warnings
and created target cxx17build
2019-04-18 16:07:16 -07:00
Yann Collet
4f6de46f60 fix several minor static analyzer warnings 2019-04-18 12:05:50 -07:00
Yann Collet
3f558163ad fuzzer: fixed scan-build leak warning
the program exit(),
so there is no need to track and dealloc every buffer.
2019-04-18 10:38:51 -07:00
Yann Collet
8f0e744063 fuzzer: fix explicit cast for C++ 2019-04-17 15:44:14 -07:00
Yann Collet
1ed69691a1 fuzzer: added tests to detect LZ4_decompress_fast() out of bound read 2019-04-17 13:31:24 -07:00
Norm Green
1848ea5cbd Fix AIX errors/warnings 2019-04-17 09:20:09 -07:00
Yann Collet
0d4a974639 Merge branch 'dev' into fixframe 2019-04-15 11:18:33 -07:00
Yann Collet
ac5d2629c1 added a fake initialization to please an analyzer
which is unable to understand that the variable is necessarily initialized
in spite of an assert just before.
2019-04-15 11:17:35 -07:00
Yann Collet
ce0f316989 fix fuzzer tests on dirty context
context is no longer dirty after a failed compressed block.
Actually, all indexes are fine.
It remains compatible with continued streaming, and reset*_fast().
2019-04-15 11:12:54 -07:00
Yann Collet
98e5c0062f added more margin for canary in frametest 2019-04-15 10:44:46 -07:00
Yann Collet
3ab916c6a2 frametest: removed uninitialized warning
was a false positive, but better remove it anyway
2019-04-15 10:14:36 -07:00
Yann Collet
9c41e5804e assert() the failed test
ensure canary remains within buffer limits
2019-04-15 02:11:59 -07:00
Yann Collet
c222dd9010 fixed frametest
One test could write a canary value out of bound
in exceptional conditions involving multiple flushes
triggered by -s3421 -t462948.
2019-04-15 01:54:40 -07:00
Yann Collet
63bfb64b80 and even more visual conversion warnings 2019-04-12 17:40:23 -07:00
Yann Collet
c7554c3004 fixed minor Visual conversion warnings 2019-04-12 17:03:28 -07:00
Yann Collet
9c49e3ca07 added tests for -d -m -c
seems to work properly
2019-04-12 16:10:55 -07:00
Yann Collet
e865a3e7ec fixed lz4 -m -c
can compress multiple files into stdout
2019-04-12 15:17:48 -07:00
Yann Collet
20c2a5fc94 added command -BI for "Independent Blocks"
This is the reverse of `-BD`, and the current default.

This command can be useful to reverse a previous `-BD` command.
It may in the future be more important
if `lz4` switches to generating dependent blocks by default.
2019-04-12 13:27:11 -07:00
Yann Collet
9e501702bd made LZ4F_getHeaderSize() public 2019-04-09 18:10:58 -07:00
Yann Collet
d8d5f14138 fixed loadDictHC
by making a full initialization
instead of a fast reset.
2019-04-09 15:37:59 -07:00
Yann Collet
14c71dfa9c modified LZ4_initStreamHC() to look like LZ4_initStream()
it is now a pure initializer, for statically allocated states.
It can initialize any memory area, and because of this, requires size.
2019-04-09 13:55:42 -07:00
Yann Collet
da19cc79da checkFrame: removed %zu
not liked by mingw
2019-04-08 14:21:09 -07:00
Yann Collet
b92681f3c0 fullbench: assert lz4_stream_t initialization 2019-04-08 14:10:59 -07:00
Yann Collet
3f5f10c63e fixed cleaning tmp directory 2019-04-08 14:01:32 -07:00
Yann Collet
249703ae2e slightly faster huge file test
level down 5->4
size down 6G->5G
2019-04-08 13:49:26 -07:00
Yann Collet
5db9a2f8b6 added make list target to tests 2019-04-08 13:45:01 -07:00
Yann Collet
2ece0d8380 created LZ4_initStream()
- promoted LZ4_resetStream_fast() to stable
- moved LZ4_resetStream() into deprecate, but without triggering a compiler warning
- update all sources to no longer rely on LZ4_resetStream()

note : LZ4_initStream() proposal is slightly different :
it's able to initialize any buffer, provided that it's large enough.
To this end, it accepts a void*, and returns an LZ4_stream_t*.
2019-04-05 12:56:26 -07:00
Yann Collet
2a94faf462 fixed _GNU_SOURCE duplicate 2019-04-05 11:55:34 -07:00
Yann Collet
a4f1635b0a fuzzer: fixed strict c99 with mmap+MAP_ANONYMOUS 2019-04-05 11:47:06 -07:00
Yann Collet
c491df54ec created LZ4_initStreamHC()
- promoted LZ4_resetStreamHC_fast() to stable
- moved LZ4_resetStreamHC() to deprecated (but do not generate a warning yet)
- Updated doc, to highlight difference between init and reset
- switched all invocations of LZ4_resetStreamHC() onto LZ4_initStreamHC()
- misc: ensure `make all` also builds /tests
2019-04-04 17:05:11 -07:00
Yann Collet
7a39fb8fb6 make _fast*() decoder generate a deprecation warning
updated modification
2019-04-04 12:47:36 -07:00
Tim Zakian
9028682e7a Fix pass-through mode 2019-01-10 10:20:17 -08:00
Yann Collet
186015a5d2 fixed strict C++ compilation 2019-01-09 13:45:42 -08:00
Yann Collet
baed01a9c7 fixed long sequence overflow test 2019-01-09 13:38:33 -08:00
Yann Collet
fbebf0345d minor explicit cast warning 2019-01-09 13:18:43 -08:00
Yann Collet
e953474464
Merge pull request #634 from lz4/longSeqTest
add a test to check long sequences (#631)
2019-01-09 12:22:04 -08:00
Yann Collet
7741c60f98 add a test to check long sequences (#631)
the test fails, as intended,
since #631 is not merged yet in this branch.
2019-01-09 12:09:52 -08:00
Tim Zakian
4ec29b0fab Fix C90 compatibility issue 2019-01-09 11:17:46 -08:00
Tim Zakian
8193742251 Make LZ4F_getBlockSize public and publis in experimental section 2019-01-09 10:49:49 -08:00
Ruben O. Chiavone
4c953b46ef Add test to cover issue #596 2019-01-09 01:51:40 -03:00
Lzu Tao
49073aca86 clang: Fix -Wcomma 2018-12-02 20:39:47 +07:00
Lzu Tao
b9d3080d75 clang: Fix -Wcast-qual 2018-12-02 20:30:25 +07:00
Lzu Tao
0241755dbf Fix clang warnings: -Wformat-pedantic and -Werror=overflow 2018-12-02 20:12:24 +07:00
Bing Xu
b192c86ba4 [amalgamation] lz4frame.c 2018-11-26 11:30:15 -08:00
Bing Xu
a7e8d394c0 [amalgamation] add test 2018-11-16 09:37:19 -08:00
Oleg Khabinov
f27ea0774e Adding information about dirty context for _HC_ family of functions 2018-10-10 10:33:04 -07:00
Yann Collet
df6d00ede5
Merge pull request #592 from lz4/compressEnd
fix LZ4F_compressEnd()
2018-10-09 15:37:55 -07:00
Yann Collet
e07a37d712 added a test for LZ4F_compressEnd()
which actively tries to make it write out of bound.
For this scenario to be possible,
it's necessary to set dstCapacity < LZ4F_compressBound()

When a compression operation fails,
the CCtx context is left in an undefined state,
therefore compression cannot resume.
As a consequence :
- round trip tests must be aborted, since there is nothing valid to decompress
- most users avoid this situation, by ensuring that dstCapacity >= LZ4F_compressBound()

For these reasons, this use case was poorly tested up to now.
2018-10-09 14:25:18 -07:00
Yann Collet
637245958f
Merge pull request #588 from khabinov/stream-dirty-followups
Some followups and renamings
2018-10-09 13:14:00 -07:00
Blaise Sanouillet
294293d899 support custom block sizes: fix memory leak to make CI builds happy 2018-10-02 05:38:30 -07:00
Oleg Khabinov
28eb88d988 Some followups and renamings 2018-10-01 15:19:45 -07:00
Blaise Sanouillet
d4703852b1 support custom block sizes: remove unneeded fudging, fix leaked filehandles, other nits 2018-10-01 05:22:50 -07:00
Blaise Sanouillet
7f18842244 Merge branch 'dev' into custom_block_sizes 2018-10-01 05:09:19 -07:00
Oleg Khabinov
f2ae385c2f Rename initCheck to dirtyContext and use it in LZ4_resetStream_fast() to check if full reset is needed. 2018-09-28 14:55:05 -07:00
Blaise Sanouillet
4d9435f1ee support custom block sizes: fix const 2018-09-28 10:00:38 -07:00
Blaise Sanouillet
64ad395d27 support custom block sizes 2018-09-28 08:02:49 -07:00
Yann Collet
b2215f2a89 tried to clean another bunch of cppcheck warnings
so "funny" thing with cppcheck
is that no 2 versions give the same list of warnings.

On Mac, I'm using v1.81, which had all warnings fixed.
On Travis CI, it's v1.61, and it complains about a dozen more/different things.
On Linux, it's v1.72, and it finds a completely different list of a half dozen warnings.

Some of these seems to be bugs/limitations in cppcheck itself.
The TravisCI version v1.61 seems unable to understand %zu correctly, and seems to assume it means %u.
2018-09-19 12:12:49 -07:00
Yann Collet
5a10ed2f7b added cppcheck
as Makefile target and Travis CI test.

Fixed last cppcheck warnings in tests and examples
2018-09-18 16:52:02 -07:00
Yann Collet
b87a8e9e62 fixed minor warning in fuzzer.c
added a few more comments and assert()
2018-09-10 16:48:41 -07:00
Yann Collet
d28389b2dc Merge branch 'dev' into partialDecode 2018-09-10 15:44:40 -07:00
Lucas Holt
3318d573ba Add support for MidnightBSD 2018-09-08 14:46:54 -04:00
Yann Collet
e22bb80074 fixed fuzzer test
and removed one blind copy, since there is no more guarantee that at least 4 bytes are still available in output buffer
2018-09-07 18:22:01 -07:00
Yann Collet
bf614d3c51 first sketch for a byte-accurate partial decoder 2018-09-07 15:44:19 -07:00
Yann Collet
0f08c22c31
Merge pull request #563 from lz4/docDict
updated documentation for dictionary compression
2018-09-06 12:43:29 -07:00
Yann Collet
0fea528e3a updated documentation regarding dictionary compression
following suggestion from @stbrumme (#558)

Also : bumped version number, regenerated man page and html doc
2018-09-05 14:05:08 -07:00
Yann Collet
30f6f34328 removed one assert() condition
which is not correct when using LZ4_HC with dictionary and starting from a low address (<0x10000).
2018-09-05 11:25:10 -07:00
Yann Collet
52cce30562 made roundTripTest fully general
no longer "locked" on level 9
2018-09-05 10:25:38 -07:00
Yann Collet
943fa6244a fix minor cast warning for C++ compilation 2018-09-04 17:45:51 -07:00
Yann Collet
d2d5660970 new test program : roundTripTest
make a round trip test with arbitrary input file,
generate an `abort()` on error,
to work in tandem with `afl`.

note : currently locked on level 9, to investigate #560.
2018-09-04 16:50:34 -07:00
Jennifer Liu
e778db373b Fixed bugs about incorrect acceleration calculation and benchmarking negative compresion level 2018-06-27 13:36:38 -07:00
Jennifer Liu
8745638d7c Fixed invalid argument test and reformatted else 2018-06-26 17:53:12 -07:00
Jennifer Liu
9ee5183d9b Fixed code based on comments from pull request 2018-06-26 17:31:15 -07:00
Jennifer Liu
e95706bb2a Fixed lz4 not found error part 2 2018-06-26 11:24:21 -07:00
Jennifer Liu
075952e340 Fixed lz4 not found error 2018-06-26 11:15:55 -07:00
Jennifer Liu
17bcb58eb0 Fixed bug about file to be compressed is not present 2018-06-25 18:51:47 -07:00
Jennifer Liu
536b79afd9 Added --fast command to cli 2018-06-25 17:46:39 -07:00
Norm Green
ebe7e35601 Fix AIX 32 bit build problem of fuzzer.c 2018-06-01 11:52:22 -07:00
W. Felix Handte
c746a27e91 Test Linking C-Compiled Library and C++-Compiled Tests 2018-05-21 22:29:20 -04:00
fbrosson
2149b1a8f6 Add Haiku as a validated target.
lz4 1.8.2 works fine on Haiku and passes all tests.
2018-05-17 16:52:53 +00:00
Yann Collet
abb1f70e17
Merge pull request #538 from lz4/frameTestError
Fix frametest error
2018-05-07 11:33:53 -07:00
Yann Collet
d7b6c726ed small extDict : fixed side-effect
don't fix dictionaries of size 0.
setting dictEnd == source triggers prefix mode,
thus removing possibility to use CDict.
2018-05-05 19:59:00 -07:00
Yann Collet
af12733467 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.
2018-05-05 18:24:11 -07:00
Nick Terrell
3e7fa1b14d Attempt to fix travis 2018-05-04 14:33:59 -07:00
Nick Terrell
a7cc0b590a Fix make install
* Uninstall didn't remove the pkg-config correctly.
* Fix `mandir`
* Allow overriding either upper- or lower-case location variables, but
  always use the lower case variables.
* Add test case that ensures overriding both upper- and lower-case
  variables is the same, and that the directory is empty after uninstall.
2018-05-04 13:50:23 -07:00
Yann Collet
999a8488f6 removed test that might be optimized away
under UB rule "no overflow on int"
2018-05-02 13:57:33 -07:00
Yann Collet
93cf628a08 introduce LZ4_decoderRingBufferSize()
fuzzer : fix and robustify ring buffer tests
2018-05-02 13:01:04 -07:00
Cyan4973
5a2501a90d added a test case for LZ4_decompress_fast_usingDict
with a separated dictionary
since a joined dictionary is now detected as prefix64K.

Also : fixed a minor warning under msys
2018-04-29 07:42:24 -07:00
Yann Collet
9d4eae59f0
Merge pull request #522 from svpv/refactorDec
Refactor dec
2018-04-27 17:22:06 -07:00
Alexey Tourbin
ce4e1389cc fuzzer.c: enabled ring buffer tests for decompress_fast
Ring buffer tests were performed only with LZ4_decompress_safe_continue,
leaving my buggy changes to LZ4_decompress_safe_continue undetected.
The tests are now replicated and performed in a similar manner for both
LZ4_decompress_safe_continue and LZ4_decompress_safe_continue (except
for the small buffer case where only one function can be tested,
because part of the dictionary is overwritten with the output).

I also updated function names in the messages (changed them to the
actual ones).  The error was reported for LZ4_decompress_safe(),
which I found misleading.
2018-04-27 07:27:10 +03:00