171e7ee59SPeter Avalos ------------------------------------------------------------------ 271e7ee59SPeter Avalos This file is part of bzip2/libbzip2, a program and library for 371e7ee59SPeter Avalos lossless, block-sorting data compression. 471e7ee59SPeter Avalos 5*86954436SDaniel Fojt bzip2/libbzip2 version 1.0.8 of 13 July 2019 6*86954436SDaniel Fojt Copyright (C) 1996-2019 Julian Seward <jseward@acm.org> 771e7ee59SPeter Avalos 871e7ee59SPeter Avalos Please read the WARNING, DISCLAIMER and PATENTS sections in the 971e7ee59SPeter Avalos README file. 1071e7ee59SPeter Avalos 1171e7ee59SPeter Avalos This program is released under the terms of the license contained 1271e7ee59SPeter Avalos in the file LICENSE. 1371e7ee59SPeter Avalos ------------------------------------------------------------------ 1471e7ee59SPeter Avalos 1571e7ee59SPeter Avalos 1671e7ee59SPeter Avalos0.9.0 1771e7ee59SPeter Avalos~~~~~ 1871e7ee59SPeter AvalosFirst version. 1971e7ee59SPeter Avalos 2071e7ee59SPeter Avalos 2171e7ee59SPeter Avalos0.9.0a 2271e7ee59SPeter Avalos~~~~~~ 2371e7ee59SPeter AvalosRemoved 'ranlib' from Makefile, since most modern Unix-es 2471e7ee59SPeter Avalosdon't need it, or even know about it. 2571e7ee59SPeter Avalos 2671e7ee59SPeter Avalos 2771e7ee59SPeter Avalos0.9.0b 2871e7ee59SPeter Avalos~~~~~~ 2971e7ee59SPeter AvalosFixed a problem with error reporting in bzip2.c. This does not effect 3071e7ee59SPeter Avalosthe library in any way. Problem is: versions 0.9.0 and 0.9.0a (of the 3171e7ee59SPeter Avalosprogram proper) compress and decompress correctly, but give misleading 3271e7ee59SPeter Avaloserror messages (internal panics) when an I/O error occurs, instead of 3371e7ee59SPeter Avalosreporting the problem correctly. This shouldn't give any data loss 3471e7ee59SPeter Avalos(as far as I can see), but is confusing. 3571e7ee59SPeter Avalos 3671e7ee59SPeter AvalosMade the inline declarations disappear for non-GCC compilers. 3771e7ee59SPeter Avalos 3871e7ee59SPeter Avalos 3971e7ee59SPeter Avalos0.9.0c 4071e7ee59SPeter Avalos~~~~~~ 4171e7ee59SPeter AvalosFixed some problems in the library pertaining to some boundary cases. 4271e7ee59SPeter AvalosThis makes the library behave more correctly in those situations. The 4371e7ee59SPeter Avalosfixes apply only to features (calls and parameters) not used by 4471e7ee59SPeter Avalosbzip2.c, so the non-fixedness of them in previous versions has no 4571e7ee59SPeter Avaloseffect on reliability of bzip2.c. 4671e7ee59SPeter Avalos 4771e7ee59SPeter AvalosIn bzlib.c: 4871e7ee59SPeter Avalos * made zero-length BZ_FLUSH work correctly in bzCompress(). 4971e7ee59SPeter Avalos * fixed bzWrite/bzRead to ignore zero-length requests. 5071e7ee59SPeter Avalos * fixed bzread to correctly handle read requests after EOF. 5171e7ee59SPeter Avalos * wrong parameter order in call to bzDecompressInit in 5271e7ee59SPeter Avalos bzBuffToBuffDecompress. Fixed. 5371e7ee59SPeter Avalos 5471e7ee59SPeter AvalosIn compress.c: 5571e7ee59SPeter Avalos * changed setting of nGroups in sendMTFValues() so as to 5671e7ee59SPeter Avalos do a bit better on small files. This _does_ effect 5771e7ee59SPeter Avalos bzip2.c. 5871e7ee59SPeter Avalos 5971e7ee59SPeter Avalos 6071e7ee59SPeter Avalos0.9.5a 6171e7ee59SPeter Avalos~~~~~~ 6271e7ee59SPeter AvalosMajor change: add a fallback sorting algorithm (blocksort.c) 6371e7ee59SPeter Avalosto give reasonable behaviour even for very repetitive inputs. 6471e7ee59SPeter AvalosNuked --repetitive-best and --repetitive-fast since they are 6571e7ee59SPeter Avalosno longer useful. 6671e7ee59SPeter Avalos 6771e7ee59SPeter AvalosMinor changes: mostly a whole bunch of small changes/ 6871e7ee59SPeter Avalosbugfixes in the driver (bzip2.c). Changes pertaining to the 6971e7ee59SPeter Avalosuser interface are: 7071e7ee59SPeter Avalos 7171e7ee59SPeter Avalos allow decompression of symlink'd files to stdout 7271e7ee59SPeter Avalos decompress/test files even without .bz2 extension 7371e7ee59SPeter Avalos give more accurate error messages for I/O errors 7471e7ee59SPeter Avalos when compressing/decompressing to stdout, don't catch control-C 7571e7ee59SPeter Avalos read flags from BZIP2 and BZIP environment variables 7671e7ee59SPeter Avalos decline to break hard links to a file unless forced with -f 7771e7ee59SPeter Avalos allow -c flag even with no filenames 7871e7ee59SPeter Avalos preserve file ownerships as far as possible 7971e7ee59SPeter Avalos make -s -1 give the expected block size (100k) 8071e7ee59SPeter Avalos add a flag -q --quiet to suppress nonessential warnings 8171e7ee59SPeter Avalos stop decoding flags after --, so files beginning in - can be handled 8271e7ee59SPeter Avalos resolved inconsistent naming: bzcat or bz2cat ? 8371e7ee59SPeter Avalos bzip2 --help now returns 0 8471e7ee59SPeter Avalos 8571e7ee59SPeter AvalosProgramming-level changes are: 8671e7ee59SPeter Avalos 8771e7ee59SPeter Avalos fixed syntax error in GET_LL4 for Borland C++ 5.02 8871e7ee59SPeter Avalos let bzBuffToBuffDecompress return BZ_DATA_ERROR{_MAGIC} 8971e7ee59SPeter Avalos fix overshoot of mode-string end in bzopen_or_bzdopen 9071e7ee59SPeter Avalos wrapped bzlib.h in #ifdef __cplusplus ... extern "C" { ... } 9171e7ee59SPeter Avalos close file handles under all error conditions 9271e7ee59SPeter Avalos added minor mods so it compiles with DJGPP out of the box 9371e7ee59SPeter Avalos fixed Makefile so it doesn't give problems with BSD make 9471e7ee59SPeter Avalos fix uninitialised memory reads in dlltest.c 9571e7ee59SPeter Avalos 9671e7ee59SPeter Avalos0.9.5b 9771e7ee59SPeter Avalos~~~~~~ 9871e7ee59SPeter AvalosOpen stdin/stdout in binary mode for DJGPP. 9971e7ee59SPeter Avalos 10071e7ee59SPeter Avalos0.9.5c 10171e7ee59SPeter Avalos~~~~~~ 10271e7ee59SPeter AvalosChanged BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1. The + 1 10371e7ee59SPeter Avalosversion could cause the sorted order to be wrong in some extremely 10471e7ee59SPeter Avalosobscure cases. Also changed setting of quadrant in blocksort.c. 10571e7ee59SPeter Avalos 10671e7ee59SPeter Avalos0.9.5d 10771e7ee59SPeter Avalos~~~~~~ 10871e7ee59SPeter AvalosThe only functional change is to make bzlibVersion() in the library 10971e7ee59SPeter Avalosreturn the correct string. This has no effect whatsoever on the 11071e7ee59SPeter Avalosfunctioning of the bzip2 program or library. Added a couple of casts 11171e7ee59SPeter Avalosso the library compiles without warnings at level 3 in MS Visual 11271e7ee59SPeter AvalosStudio 6.0. Included a Y2K statement in the file Y2K_INFO. All other 11371e7ee59SPeter Avaloschanges are minor documentation changes. 11471e7ee59SPeter Avalos 11571e7ee59SPeter Avalos1.0 11671e7ee59SPeter Avalos~~~ 11771e7ee59SPeter AvalosSeveral minor bugfixes and enhancements: 11871e7ee59SPeter Avalos 11971e7ee59SPeter Avalos* Large file support. The library uses 64-bit counters to 12071e7ee59SPeter Avalos count the volume of data passing through it. bzip2.c 12171e7ee59SPeter Avalos is now compiled with -D_FILE_OFFSET_BITS=64 to get large 12271e7ee59SPeter Avalos file support from the C library. -v correctly prints out 12371e7ee59SPeter Avalos file sizes greater than 4 gigabytes. All these changes have 12471e7ee59SPeter Avalos been made without assuming a 64-bit platform or a C compiler 12571e7ee59SPeter Avalos which supports 64-bit ints, so, except for the C library 12671e7ee59SPeter Avalos aspect, they are fully portable. 12771e7ee59SPeter Avalos 12871e7ee59SPeter Avalos* Decompression robustness. The library/program should be 12971e7ee59SPeter Avalos robust to any corruption of compressed data, detecting and 13071e7ee59SPeter Avalos handling _all_ corruption, instead of merely relying on 13171e7ee59SPeter Avalos the CRCs. What this means is that the program should 13271e7ee59SPeter Avalos never crash, given corrupted data, and the library should 13371e7ee59SPeter Avalos always return BZ_DATA_ERROR. 13471e7ee59SPeter Avalos 13571e7ee59SPeter Avalos* Fixed an obscure race-condition bug only ever observed on 13671e7ee59SPeter Avalos Solaris, in which, if you were very unlucky and issued 13771e7ee59SPeter Avalos control-C at exactly the wrong time, both input and output 13871e7ee59SPeter Avalos files would be deleted. 13971e7ee59SPeter Avalos 14071e7ee59SPeter Avalos* Don't run out of file handles on test/decompression when 14171e7ee59SPeter Avalos large numbers of files have invalid magic numbers. 14271e7ee59SPeter Avalos 14371e7ee59SPeter Avalos* Avoid library namespace pollution. Prefix all exported 14471e7ee59SPeter Avalos symbols with BZ2_. 14571e7ee59SPeter Avalos 14671e7ee59SPeter Avalos* Minor sorting enhancements from my DCC2000 paper. 14771e7ee59SPeter Avalos 14871e7ee59SPeter Avalos* Advance the version number to 1.0, so as to counteract the 14971e7ee59SPeter Avalos (false-in-this-case) impression some people have that programs 15071e7ee59SPeter Avalos with version numbers less than 1.0 are in some way, experimental, 15171e7ee59SPeter Avalos pre-release versions. 15271e7ee59SPeter Avalos 15371e7ee59SPeter Avalos* Create an initial Makefile-libbz2_so to build a shared library. 15471e7ee59SPeter Avalos Yes, I know I should really use libtool et al ... 15571e7ee59SPeter Avalos 15671e7ee59SPeter Avalos* Make the program exit with 2 instead of 0 when decompression 15771e7ee59SPeter Avalos fails due to a bad magic number (ie, an invalid bzip2 header). 15871e7ee59SPeter Avalos Also exit with 1 (as the manual claims :-) whenever a diagnostic 15971e7ee59SPeter Avalos message would have been printed AND the corresponding operation 16071e7ee59SPeter Avalos is aborted, for example 16171e7ee59SPeter Avalos bzip2: Output file xx already exists. 16271e7ee59SPeter Avalos When a diagnostic message is printed but the operation is not 16371e7ee59SPeter Avalos aborted, for example 16471e7ee59SPeter Avalos bzip2: Can't guess original name for wurble -- using wurble.out 16571e7ee59SPeter Avalos then the exit value 0 is returned, unless some other problem is 16671e7ee59SPeter Avalos also detected. 16771e7ee59SPeter Avalos 16871e7ee59SPeter Avalos I think it corresponds more closely to what the manual claims now. 16971e7ee59SPeter Avalos 17071e7ee59SPeter Avalos 17171e7ee59SPeter Avalos1.0.1 17271e7ee59SPeter Avalos~~~~~ 17371e7ee59SPeter Avalos* Modified dlltest.c so it uses the new BZ2_ naming scheme. 17471e7ee59SPeter Avalos* Modified makefile-msc to fix minor build probs on Win2k. 17571e7ee59SPeter Avalos* Updated README.COMPILATION.PROBLEMS. 17671e7ee59SPeter Avalos 17771e7ee59SPeter AvalosThere are no functionality changes or bug fixes relative to version 17871e7ee59SPeter Avalos1.0.0. This is just a documentation update + a fix for minor Win32 17971e7ee59SPeter Avalosbuild problems. For almost everyone, upgrading from 1.0.0 to 1.0.1 is 18071e7ee59SPeter Avalosutterly pointless. Don't bother. 18171e7ee59SPeter Avalos 18271e7ee59SPeter Avalos 18371e7ee59SPeter Avalos1.0.2 18471e7ee59SPeter Avalos~~~~~ 18571e7ee59SPeter AvalosA bug fix release, addressing various minor issues which have appeared 18671e7ee59SPeter Avalosin the 18 or so months since 1.0.1 was released. Most of the fixes 18771e7ee59SPeter Avalosare to do with file-handling or documentation bugs. To the best of my 18871e7ee59SPeter Avalosknowledge, there have been no data-loss-causing bugs reported in the 18971e7ee59SPeter Avaloscompression/decompression engine of 1.0.0 or 1.0.1. 19071e7ee59SPeter Avalos 19171e7ee59SPeter AvalosNote that this release does not improve the rather crude build system 19271e7ee59SPeter Avalosfor Unix platforms. The general plan here is to autoconfiscate/ 19371e7ee59SPeter Avaloslibtoolise 1.0.2 soon after release, and release the result as 1.1.0 19471e7ee59SPeter Avalosor perhaps 1.2.0. That, however, is still just a plan at this point. 19571e7ee59SPeter Avalos 19671e7ee59SPeter AvalosHere are the changes in 1.0.2. Bug-reporters and/or patch-senders in 19771e7ee59SPeter Avalosparentheses. 19871e7ee59SPeter Avalos 19971e7ee59SPeter Avalos* Fix an infinite segfault loop in 1.0.1 when a directory is 20071e7ee59SPeter Avalos encountered in -f (force) mode. 20171e7ee59SPeter Avalos (Trond Eivind Glomsrod, Nicholas Nethercote, Volker Schmidt) 20271e7ee59SPeter Avalos 20371e7ee59SPeter Avalos* Avoid double fclose() of output file on certain I/O error paths. 20471e7ee59SPeter Avalos (Solar Designer) 20571e7ee59SPeter Avalos 20671e7ee59SPeter Avalos* Don't fail with internal error 1007 when fed a long stream (> 48MB) 20771e7ee59SPeter Avalos of byte 251. Also print useful message suggesting that 1007s may be 20871e7ee59SPeter Avalos caused by bad memory. 20971e7ee59SPeter Avalos (noticed by Juan Pedro Vallejo, fixed by me) 21071e7ee59SPeter Avalos 21171e7ee59SPeter Avalos* Fix uninitialised variable silly bug in demo prog dlltest.c. 21271e7ee59SPeter Avalos (Jorj Bauer) 21371e7ee59SPeter Avalos 21471e7ee59SPeter Avalos* Remove 512-MB limitation on recovered file size for bzip2recover 21571e7ee59SPeter Avalos on selected platforms which support 64-bit ints. At the moment 21671e7ee59SPeter Avalos all GCC supported platforms, and Win32. 21771e7ee59SPeter Avalos (me, Alson van der Meulen) 21871e7ee59SPeter Avalos 21971e7ee59SPeter Avalos* Hard-code header byte values, to give correct operation on platforms 22071e7ee59SPeter Avalos using EBCDIC as their native character set (IBM's OS/390). 22171e7ee59SPeter Avalos (Leland Lucius) 22271e7ee59SPeter Avalos 22371e7ee59SPeter Avalos* Copy file access times correctly. 22471e7ee59SPeter Avalos (Marty Leisner) 22571e7ee59SPeter Avalos 22671e7ee59SPeter Avalos* Add distclean and check targets to Makefile. 22771e7ee59SPeter Avalos (Michael Carmack) 22871e7ee59SPeter Avalos 22971e7ee59SPeter Avalos* Parameterise use of ar and ranlib in Makefile. Also add $(LDFLAGS). 23071e7ee59SPeter Avalos (Rich Ireland, Bo Thorsen) 23171e7ee59SPeter Avalos 23271e7ee59SPeter Avalos* Pass -p (create parent dirs as needed) to mkdir during make install. 23371e7ee59SPeter Avalos (Jeremy Fusco) 23471e7ee59SPeter Avalos 23571e7ee59SPeter Avalos* Dereference symlinks when copying file permissions in -f mode. 23671e7ee59SPeter Avalos (Volker Schmidt) 23771e7ee59SPeter Avalos 23871e7ee59SPeter Avalos* Majorly simplify implementation of uInt64_qrm10. 23971e7ee59SPeter Avalos (Bo Lindbergh) 24071e7ee59SPeter Avalos 24171e7ee59SPeter Avalos* Check the input file still exists before deleting the output one, 24271e7ee59SPeter Avalos when aborting in cleanUpAndFail(). 24371e7ee59SPeter Avalos (Joerg Prante, Robert Linden, Matthias Krings) 24471e7ee59SPeter Avalos 24571e7ee59SPeter AvalosAlso a bunch of patches courtesy of Philippe Troin, the Debian maintainer 24671e7ee59SPeter Avalosof bzip2: 24771e7ee59SPeter Avalos 24871e7ee59SPeter Avalos* Wrapper scripts (with manpages): bzdiff, bzgrep, bzmore. 24971e7ee59SPeter Avalos 25071e7ee59SPeter Avalos* Spelling changes and minor enhancements in bzip2.1. 25171e7ee59SPeter Avalos 25271e7ee59SPeter Avalos* Avoid race condition between creating the output file and setting its 25371e7ee59SPeter Avalos interim permissions safely, by using fopen_output_safely(). 25471e7ee59SPeter Avalos No changes to bzip2recover since there is no issue with file 25571e7ee59SPeter Avalos permissions there. 25671e7ee59SPeter Avalos 25771e7ee59SPeter Avalos* do not print senseless report with -v when compressing an empty 25871e7ee59SPeter Avalos file. 25971e7ee59SPeter Avalos 26071e7ee59SPeter Avalos* bzcat -f works on non-bzip2 files. 26171e7ee59SPeter Avalos 26271e7ee59SPeter Avalos* do not try to escape shell meta-characters on unix (the shell takes 26371e7ee59SPeter Avalos care of these). 26471e7ee59SPeter Avalos 26571e7ee59SPeter Avalos* added --fast and --best aliases for -1 -9 for gzip compatibility. 26671e7ee59SPeter Avalos 26771e7ee59SPeter Avalos 26871e7ee59SPeter Avalos1.0.3 (15 Feb 05) 26971e7ee59SPeter Avalos~~~~~~~~~~~~~~~~~ 27071e7ee59SPeter AvalosFixes some minor bugs since the last version, 1.0.2. 27171e7ee59SPeter Avalos 27271e7ee59SPeter Avalos* Further robustification against corrupted compressed data. 27371e7ee59SPeter Avalos There are currently no known bitstreams which can cause the 27471e7ee59SPeter Avalos decompressor to crash, loop or access memory which does not 27571e7ee59SPeter Avalos belong to it. If you are using bzip2 or the library to 27671e7ee59SPeter Avalos decompress bitstreams from untrusted sources, an upgrade 27771e7ee59SPeter Avalos to 1.0.3 is recommended. This fixes CAN-2005-1260. 27871e7ee59SPeter Avalos 27971e7ee59SPeter Avalos* The documentation has been converted to XML, from which html 28071e7ee59SPeter Avalos and pdf can be derived. 28171e7ee59SPeter Avalos 28271e7ee59SPeter Avalos* Various minor bugs in the documentation have been fixed. 28371e7ee59SPeter Avalos 28471e7ee59SPeter Avalos* Fixes for various compilation warnings with newer versions of 28571e7ee59SPeter Avalos gcc, and on 64-bit platforms. 28671e7ee59SPeter Avalos 28771e7ee59SPeter Avalos* The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2. 28871e7ee59SPeter Avalos This has been fixed. 28971e7ee59SPeter Avalos 29071e7ee59SPeter Avalos 29171e7ee59SPeter Avalos1.0.4 (20 Dec 06) 29271e7ee59SPeter Avalos~~~~~~~~~~~~~~~~~ 29371e7ee59SPeter AvalosFixes some minor bugs since the last version, 1.0.3. 29471e7ee59SPeter Avalos 29571e7ee59SPeter Avalos* Fix file permissions race problem (CAN-2005-0953). 29671e7ee59SPeter Avalos 29771e7ee59SPeter Avalos* Avoid possible segfault in BZ2_bzclose. From Coverity's NetBSD 29871e7ee59SPeter Avalos scan. 29971e7ee59SPeter Avalos 30071e7ee59SPeter Avalos* 'const'/prototype cleanups in the C code. 30171e7ee59SPeter Avalos 30271e7ee59SPeter Avalos* Change default install location to /usr/local, and handle multiple 30371e7ee59SPeter Avalos 'make install's without error. 30471e7ee59SPeter Avalos 30571e7ee59SPeter Avalos* Sanitise file names more carefully in bzgrep. Fixes CAN-2005-0758 30671e7ee59SPeter Avalos to the extent that applies to bzgrep. 30771e7ee59SPeter Avalos 30871e7ee59SPeter Avalos* Use 'mktemp' rather than 'tempfile' in bzdiff. 30971e7ee59SPeter Avalos 31071e7ee59SPeter Avalos* Tighten up a couple of assertions in blocksort.c following automated 31171e7ee59SPeter Avalos analysis. 31271e7ee59SPeter Avalos 31371e7ee59SPeter Avalos* Fix minor doc/comment bugs. 31471e7ee59SPeter Avalos 31571e7ee59SPeter Avalos 31671e7ee59SPeter Avalos1.0.5 (10 Dec 07) 31771e7ee59SPeter Avalos~~~~~~~~~~~~~~~~~ 31871e7ee59SPeter AvalosSecurity fix only. Fixes CERT-FI 20469 as it applies to bzip2. 31971e7ee59SPeter Avalos 3208b8098b1SPeter Avalos 3218b8098b1SPeter Avalos1.0.6 (6 Sept 10) 3228b8098b1SPeter Avalos~~~~~~~~~~~~~~~~~ 3238b8098b1SPeter Avalos 3248b8098b1SPeter Avalos* Security fix for CVE-2010-0405. This was reported by Mikolaj 3258b8098b1SPeter Avalos Izdebski. 3268b8098b1SPeter Avalos 3278b8098b1SPeter Avalos* Make the documentation build on Ubuntu 10.04 328*86954436SDaniel Fojt 329*86954436SDaniel Fojt1.0.7 (27 Jun 19) 330*86954436SDaniel Fojt~~~~~~~~~~~~~~~~~ 331*86954436SDaniel Fojt 332*86954436SDaniel Fojt* Fix undefined behavior in the macros SET_BH, CLEAR_BH, & ISSET_BH 333*86954436SDaniel Fojt 334*86954436SDaniel Fojt* bzip2: Fix return value when combining --test,-t and -q. 335*86954436SDaniel Fojt 336*86954436SDaniel Fojt* bzip2recover: Fix buffer overflow for large argv[0] 337*86954436SDaniel Fojt 338*86954436SDaniel Fojt* bzip2recover: Fix use after free issue with outFile (CVE-2016-3189) 339*86954436SDaniel Fojt 340*86954436SDaniel Fojt* Make sure nSelectors is not out of range (CVE-2019-12900) 341*86954436SDaniel Fojt 342*86954436SDaniel Fojt1.0.8 (13 Jul 19) 343*86954436SDaniel Fojt~~~~~~~~~~~~~~~~~ 344*86954436SDaniel Fojt 345*86954436SDaniel Fojt* Accept as many selectors as the file format allows. 346*86954436SDaniel Fojt This relaxes the fix for CVE-2019-12900 from 1.0.7 347*86954436SDaniel Fojt so that bzip2 allows decompression of bz2 files that 348*86954436SDaniel Fojt use (too) many selectors again. 349*86954436SDaniel Fojt 350*86954436SDaniel Fojt* Fix handling of large (> 4GB) files on Windows. 351*86954436SDaniel Fojt 352*86954436SDaniel Fojt* Cleanup of bzdiff and bzgrep scripts so they don't use 353*86954436SDaniel Fojt any bash extensions and handle multiple archives correctly. 354*86954436SDaniel Fojt 355*86954436SDaniel Fojt* There is now a bz2-files testsuite at 356*86954436SDaniel Fojt https://sourceware.org/git/bzip2-tests.git 357