Andrew Reading
8eba9a202e
Make threaded decompression more robust on failure.
...
This changes the decompression worker thread to signal the main thread
in case of failure, allowing the main thread to handle this
appropriately instead of just assuming the resulting data is always good.
2019-02-23 21:09:44 -08:00
Andrew Reading
1a1723834b
Fix segfault from thread race condition during decompression.
...
This fixes an issue where the main thread would not wait for all worker
threads to fully join before attempting to process their result buffers:
new_thread was true up until to the final N-1 calls, at which point the
input stream will have ended and new_thread would be false, then
bypassing the pthread_join()s.
The new_thread condition isn't actually necessary at all, so it has been
entirely removed.
2019-02-23 21:01:24 -08:00
Con Kolivas
a81248e47d
Cope with corrupt/crafted archive stream overruns.
2018-05-28 15:06:04 +10:00
Con Kolivas
3cadc63e39
Minor memleak clean ups on failures.
2018-05-28 14:39:26 +10:00
Con Kolivas
cd456aa70e
Fix failure to pthread join on corrupt archives calling fill_buffer again at the end of a stream.
2018-05-18 14:29:44 +10:00
Con Kolivas
399336eba4
Check for invalid last_head entries, avoiding infinite loops.
2018-05-17 15:21:40 +10:00
Con Kolivas
07bb66e284
Clean up error warnings.
2018-05-16 19:07:29 +10:00
Con Kolivas
4893e869e3
Add sanity check for invalid values during decompression, addressing CVE-2017-8845.
2018-05-16 16:55:41 +10:00
Con Kolivas
89d7b33e6a
Add sanity checking on chunk data on decompression.
2018-05-16 16:51:03 +10:00
Con Kolivas
3f375385a5
Avoid crash from corrupt archive reading matches beyond end of stream.
2018-05-16 16:30:54 +10:00
Con Kolivas
1cf4460412
Missed one decomp clean up.
2018-05-16 15:13:55 +10:00
Con Kolivas
a94aeb7503
Further s_buf dealloc fixes on failed decompression.
2018-05-16 14:35:06 +10:00
Con Kolivas
dc57230636
Cope with compressed length being longer than uncompressed and rounding up, attending to CVE-2017-8844.
2018-05-16 14:30:15 +10:00
Con Kolivas
d26970135c
Minor memory cleanups for failed decompressions.
2018-05-16 14:20:38 +10:00
Con Kolivas
1971c00950
Fix assignment to deallocated buffer in failed decompression.
2018-05-16 14:16:49 +10:00
Con Kolivas
d212cc1115
Use dealloc() wrapper to minimise risk of local use after free.
2018-05-16 14:12:22 +10:00
Con Kolivas
73213b9796
Merge branch 'master' into compat
2016-06-09 15:01:44 +10:00
Con Kolivas
7e92f4cb47
Fix decompression of multiple chunk encrypted archives
2016-06-09 15:00:58 +10:00
Con Kolivas
5627479c60
Tidy gotos
2016-06-09 13:56:54 +10:00
Con Kolivas
007bf5de93
Show correct lengths during testing on big endian and compressed archives
2016-06-09 11:48:04 +10:00
Con Kolivas
3dfcde4a82
Add sanity check to prevent trying to malloc more ram than a system/environment is capable of
2015-05-01 12:47:16 +10:00
Con Kolivas
e39af7eb0f
Add sanity check to prevent trying to malloc more ram than a system/environment is capable of
2015-05-01 12:47:03 +10:00
Con Kolivas
fcb64e6dbb
Do not fail if we are unable to write temporary files, giving a warning only that it might fail if we don't have enough ram
2015-04-16 16:38:20 +10:00
Con Kolivas
e3598a7b96
Fix ISO C warning in lrzip.c
2015-03-10 20:04:14 +11:00
Con Kolivas
e590d781f3
Brace failure lead to broken dump to stdout
2015-03-10 13:26:14 +11:00
Con Kolivas
8551a43c73
Attempt to decompress file in ram only if we are unable to create temporary files when decompressing to stdout
2015-03-10 12:05:55 +11:00
Con Kolivas
c3bc42e2c8
Avoid checking return values repeatedly on compress that only lead to failures anyway
2015-03-10 09:46:35 +11:00
ckolivas
f690750340
Fix remaining use of mutexes lock/unlocking in different threads with cksems, corecting cksem usage on osx
2015-03-08 10:10:38 +11:00
Con Kolivas
3f746d5d60
Use temporary file from read_seekto when STDIN will not fit in the ram input buffer
2015-03-03 13:09:00 +11:00
Con Kolivas
a334444977
Remove unused read_i64 function
2015-03-03 09:35:35 +11:00
Con Kolivas
4aa69a104a
Pass strict sizes to decompress length, rounding up only the amount we're allocating to not confuse decompression libraries
2014-05-30 22:05:51 +10:00
Con Kolivas
22496bdd5a
Convert the thread locking to use cksems
2014-05-30 21:27:21 +10:00
Con Kolivas
6c8525893b
Round up compression and decompression buffers to page size since malloc will allocate them that large anyway.
2013-09-14 12:58:31 +10:00
Con Kolivas
47de07affb
Increase the compressed buffer size given to libzpaq in case of incompressible data since it does not check if it's trying to write beyond the end of the buffer.
2013-09-14 11:45:23 +10:00
Con Kolivas
d8df50c9b7
Update various copyright dates.
2013-09-02 12:21:54 +10:00
Con Kolivas
5c811a9311
We have to run through the clear buffer function even for empty buffers or corrupt archives with empty match streams.
2013-09-01 15:02:52 +10:00
Con Kolivas
eff1efdbc5
Rewrite the magic if we receive lzma properties and have not yet written them yet during stdout operation.
2013-09-01 12:25:06 +10:00
Con Kolivas
b076dbb59d
Set the control lzma properties only once.
2013-09-01 12:17:51 +10:00
Con Kolivas
184a8f0025
Rename lrzip.h to lrzip_core.h to cope with case insensitive filesystems not working with Lrzip.h vs lrzip.h
2012-07-07 21:39:40 +10:00
Con Kolivas
081265f1c9
Use no back end compression for blocks smaller than 64 bytes to avoid issues to do with minimum buffer size and minimum match sizes of the rzip preprocessing.
2012-07-07 20:43:44 +10:00
Con Kolivas
9e33cfc24a
Implement progress counter on zpaq compress/decompress per thread within the Reader function.
2012-03-17 15:30:43 +11:00
Con Kolivas
77f6965f25
Re-instantiate the lzo compresses test for zpaq compression.
2012-03-16 23:20:54 +11:00
Con Kolivas
8b680e72ac
Remove redundant code.
2012-03-16 23:14:49 +11:00
Con Kolivas
fbcf0fcfd4
Delete now-unused zpipe code.
2012-03-16 23:04:20 +11:00
Con Kolivas
a55250cf16
Use libzpaq backend for decompression.
2012-03-16 14:14:22 +11:00
Con Kolivas
f8d05b9a66
Move zpaq compression to new libzpaq library back end.
2012-03-16 14:04:16 +11:00
Con Kolivas
5edf8471d1
Perform all checksumming in a separate thread to speed up the hash search in the rzip phase.
2012-03-11 11:51:36 +11:00
Con Kolivas
086265c83f
Update copyright notices and style to 1TBS for return codes.
2012-03-07 22:04:24 +11:00
Con Kolivas
18105bbf7c
Merge branch 'master' into liblrzip
...
Conflicts:
lrzip.c
2011-09-16 22:55:34 +10:00
Con Kolivas
271a407765
Make lzma back end message maxverbose to minimise spamming.
2011-09-15 13:29:09 +10:00