Chris@4: ------------------------------------------------------------------ Chris@4: This file is part of bzip2/libbzip2, a program and library for Chris@4: lossless, block-sorting data compression. Chris@4: Chris@4: bzip2/libbzip2 version 1.0.6 of 6 September 2010 Chris@4: Copyright (C) 1996-2010 Julian Seward Chris@4: Chris@4: Please read the WARNING, DISCLAIMER and PATENTS sections in the Chris@4: README file. Chris@4: Chris@4: This program is released under the terms of the license contained Chris@4: in the file LICENSE. Chris@4: ------------------------------------------------------------------ Chris@4: Chris@4: Chris@4: 0.9.0 Chris@4: ~~~~~ Chris@4: First version. Chris@4: Chris@4: Chris@4: 0.9.0a Chris@4: ~~~~~~ Chris@4: Removed 'ranlib' from Makefile, since most modern Unix-es Chris@4: don't need it, or even know about it. Chris@4: Chris@4: Chris@4: 0.9.0b Chris@4: ~~~~~~ Chris@4: Fixed a problem with error reporting in bzip2.c. This does not effect Chris@4: the library in any way. Problem is: versions 0.9.0 and 0.9.0a (of the Chris@4: program proper) compress and decompress correctly, but give misleading Chris@4: error messages (internal panics) when an I/O error occurs, instead of Chris@4: reporting the problem correctly. This shouldn't give any data loss Chris@4: (as far as I can see), but is confusing. Chris@4: Chris@4: Made the inline declarations disappear for non-GCC compilers. Chris@4: Chris@4: Chris@4: 0.9.0c Chris@4: ~~~~~~ Chris@4: Fixed some problems in the library pertaining to some boundary cases. Chris@4: This makes the library behave more correctly in those situations. The Chris@4: fixes apply only to features (calls and parameters) not used by Chris@4: bzip2.c, so the non-fixedness of them in previous versions has no Chris@4: effect on reliability of bzip2.c. Chris@4: Chris@4: In bzlib.c: Chris@4: * made zero-length BZ_FLUSH work correctly in bzCompress(). Chris@4: * fixed bzWrite/bzRead to ignore zero-length requests. Chris@4: * fixed bzread to correctly handle read requests after EOF. Chris@4: * wrong parameter order in call to bzDecompressInit in Chris@4: bzBuffToBuffDecompress. Fixed. Chris@4: Chris@4: In compress.c: Chris@4: * changed setting of nGroups in sendMTFValues() so as to Chris@4: do a bit better on small files. This _does_ effect Chris@4: bzip2.c. Chris@4: Chris@4: Chris@4: 0.9.5a Chris@4: ~~~~~~ Chris@4: Major change: add a fallback sorting algorithm (blocksort.c) Chris@4: to give reasonable behaviour even for very repetitive inputs. Chris@4: Nuked --repetitive-best and --repetitive-fast since they are Chris@4: no longer useful. Chris@4: Chris@4: Minor changes: mostly a whole bunch of small changes/ Chris@4: bugfixes in the driver (bzip2.c). Changes pertaining to the Chris@4: user interface are: Chris@4: Chris@4: allow decompression of symlink'd files to stdout Chris@4: decompress/test files even without .bz2 extension Chris@4: give more accurate error messages for I/O errors Chris@4: when compressing/decompressing to stdout, don't catch control-C Chris@4: read flags from BZIP2 and BZIP environment variables Chris@4: decline to break hard links to a file unless forced with -f Chris@4: allow -c flag even with no filenames Chris@4: preserve file ownerships as far as possible Chris@4: make -s -1 give the expected block size (100k) Chris@4: add a flag -q --quiet to suppress nonessential warnings Chris@4: stop decoding flags after --, so files beginning in - can be handled Chris@4: resolved inconsistent naming: bzcat or bz2cat ? Chris@4: bzip2 --help now returns 0 Chris@4: Chris@4: Programming-level changes are: Chris@4: Chris@4: fixed syntax error in GET_LL4 for Borland C++ 5.02 Chris@4: let bzBuffToBuffDecompress return BZ_DATA_ERROR{_MAGIC} Chris@4: fix overshoot of mode-string end in bzopen_or_bzdopen Chris@4: wrapped bzlib.h in #ifdef __cplusplus ... extern "C" { ... } Chris@4: close file handles under all error conditions Chris@4: added minor mods so it compiles with DJGPP out of the box Chris@4: fixed Makefile so it doesn't give problems with BSD make Chris@4: fix uninitialised memory reads in dlltest.c Chris@4: Chris@4: 0.9.5b Chris@4: ~~~~~~ Chris@4: Open stdin/stdout in binary mode for DJGPP. Chris@4: Chris@4: 0.9.5c Chris@4: ~~~~~~ Chris@4: Changed BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1. The + 1 Chris@4: version could cause the sorted order to be wrong in some extremely Chris@4: obscure cases. Also changed setting of quadrant in blocksort.c. Chris@4: Chris@4: 0.9.5d Chris@4: ~~~~~~ Chris@4: The only functional change is to make bzlibVersion() in the library Chris@4: return the correct string. This has no effect whatsoever on the Chris@4: functioning of the bzip2 program or library. Added a couple of casts Chris@4: so the library compiles without warnings at level 3 in MS Visual Chris@4: Studio 6.0. Included a Y2K statement in the file Y2K_INFO. All other Chris@4: changes are minor documentation changes. Chris@4: Chris@4: 1.0 Chris@4: ~~~ Chris@4: Several minor bugfixes and enhancements: Chris@4: Chris@4: * Large file support. The library uses 64-bit counters to Chris@4: count the volume of data passing through it. bzip2.c Chris@4: is now compiled with -D_FILE_OFFSET_BITS=64 to get large Chris@4: file support from the C library. -v correctly prints out Chris@4: file sizes greater than 4 gigabytes. All these changes have Chris@4: been made without assuming a 64-bit platform or a C compiler Chris@4: which supports 64-bit ints, so, except for the C library Chris@4: aspect, they are fully portable. Chris@4: Chris@4: * Decompression robustness. The library/program should be Chris@4: robust to any corruption of compressed data, detecting and Chris@4: handling _all_ corruption, instead of merely relying on Chris@4: the CRCs. What this means is that the program should Chris@4: never crash, given corrupted data, and the library should Chris@4: always return BZ_DATA_ERROR. Chris@4: Chris@4: * Fixed an obscure race-condition bug only ever observed on Chris@4: Solaris, in which, if you were very unlucky and issued Chris@4: control-C at exactly the wrong time, both input and output Chris@4: files would be deleted. Chris@4: Chris@4: * Don't run out of file handles on test/decompression when Chris@4: large numbers of files have invalid magic numbers. Chris@4: Chris@4: * Avoid library namespace pollution. Prefix all exported Chris@4: symbols with BZ2_. Chris@4: Chris@4: * Minor sorting enhancements from my DCC2000 paper. Chris@4: Chris@4: * Advance the version number to 1.0, so as to counteract the Chris@4: (false-in-this-case) impression some people have that programs Chris@4: with version numbers less than 1.0 are in some way, experimental, Chris@4: pre-release versions. Chris@4: Chris@4: * Create an initial Makefile-libbz2_so to build a shared library. Chris@4: Yes, I know I should really use libtool et al ... Chris@4: Chris@4: * Make the program exit with 2 instead of 0 when decompression Chris@4: fails due to a bad magic number (ie, an invalid bzip2 header). Chris@4: Also exit with 1 (as the manual claims :-) whenever a diagnostic Chris@4: message would have been printed AND the corresponding operation Chris@4: is aborted, for example Chris@4: bzip2: Output file xx already exists. Chris@4: When a diagnostic message is printed but the operation is not Chris@4: aborted, for example Chris@4: bzip2: Can't guess original name for wurble -- using wurble.out Chris@4: then the exit value 0 is returned, unless some other problem is Chris@4: also detected. Chris@4: Chris@4: I think it corresponds more closely to what the manual claims now. Chris@4: Chris@4: Chris@4: 1.0.1 Chris@4: ~~~~~ Chris@4: * Modified dlltest.c so it uses the new BZ2_ naming scheme. Chris@4: * Modified makefile-msc to fix minor build probs on Win2k. Chris@4: * Updated README.COMPILATION.PROBLEMS. Chris@4: Chris@4: There are no functionality changes or bug fixes relative to version Chris@4: 1.0.0. This is just a documentation update + a fix for minor Win32 Chris@4: build problems. For almost everyone, upgrading from 1.0.0 to 1.0.1 is Chris@4: utterly pointless. Don't bother. Chris@4: Chris@4: Chris@4: 1.0.2 Chris@4: ~~~~~ Chris@4: A bug fix release, addressing various minor issues which have appeared Chris@4: in the 18 or so months since 1.0.1 was released. Most of the fixes Chris@4: are to do with file-handling or documentation bugs. To the best of my Chris@4: knowledge, there have been no data-loss-causing bugs reported in the Chris@4: compression/decompression engine of 1.0.0 or 1.0.1. Chris@4: Chris@4: Note that this release does not improve the rather crude build system Chris@4: for Unix platforms. The general plan here is to autoconfiscate/ Chris@4: libtoolise 1.0.2 soon after release, and release the result as 1.1.0 Chris@4: or perhaps 1.2.0. That, however, is still just a plan at this point. Chris@4: Chris@4: Here are the changes in 1.0.2. Bug-reporters and/or patch-senders in Chris@4: parentheses. Chris@4: Chris@4: * Fix an infinite segfault loop in 1.0.1 when a directory is Chris@4: encountered in -f (force) mode. Chris@4: (Trond Eivind Glomsrod, Nicholas Nethercote, Volker Schmidt) Chris@4: Chris@4: * Avoid double fclose() of output file on certain I/O error paths. Chris@4: (Solar Designer) Chris@4: Chris@4: * Don't fail with internal error 1007 when fed a long stream (> 48MB) Chris@4: of byte 251. Also print useful message suggesting that 1007s may be Chris@4: caused by bad memory. Chris@4: (noticed by Juan Pedro Vallejo, fixed by me) Chris@4: Chris@4: * Fix uninitialised variable silly bug in demo prog dlltest.c. Chris@4: (Jorj Bauer) Chris@4: Chris@4: * Remove 512-MB limitation on recovered file size for bzip2recover Chris@4: on selected platforms which support 64-bit ints. At the moment Chris@4: all GCC supported platforms, and Win32. Chris@4: (me, Alson van der Meulen) Chris@4: Chris@4: * Hard-code header byte values, to give correct operation on platforms Chris@4: using EBCDIC as their native character set (IBM's OS/390). Chris@4: (Leland Lucius) Chris@4: Chris@4: * Copy file access times correctly. Chris@4: (Marty Leisner) Chris@4: Chris@4: * Add distclean and check targets to Makefile. Chris@4: (Michael Carmack) Chris@4: Chris@4: * Parameterise use of ar and ranlib in Makefile. Also add $(LDFLAGS). Chris@4: (Rich Ireland, Bo Thorsen) Chris@4: Chris@4: * Pass -p (create parent dirs as needed) to mkdir during make install. Chris@4: (Jeremy Fusco) Chris@4: Chris@4: * Dereference symlinks when copying file permissions in -f mode. Chris@4: (Volker Schmidt) Chris@4: Chris@4: * Majorly simplify implementation of uInt64_qrm10. Chris@4: (Bo Lindbergh) Chris@4: Chris@4: * Check the input file still exists before deleting the output one, Chris@4: when aborting in cleanUpAndFail(). Chris@4: (Joerg Prante, Robert Linden, Matthias Krings) Chris@4: Chris@4: Also a bunch of patches courtesy of Philippe Troin, the Debian maintainer Chris@4: of bzip2: Chris@4: Chris@4: * Wrapper scripts (with manpages): bzdiff, bzgrep, bzmore. Chris@4: Chris@4: * Spelling changes and minor enhancements in bzip2.1. Chris@4: Chris@4: * Avoid race condition between creating the output file and setting its Chris@4: interim permissions safely, by using fopen_output_safely(). Chris@4: No changes to bzip2recover since there is no issue with file Chris@4: permissions there. Chris@4: Chris@4: * do not print senseless report with -v when compressing an empty Chris@4: file. Chris@4: Chris@4: * bzcat -f works on non-bzip2 files. Chris@4: Chris@4: * do not try to escape shell meta-characters on unix (the shell takes Chris@4: care of these). Chris@4: Chris@4: * added --fast and --best aliases for -1 -9 for gzip compatibility. Chris@4: Chris@4: Chris@4: 1.0.3 (15 Feb 05) Chris@4: ~~~~~~~~~~~~~~~~~ Chris@4: Fixes some minor bugs since the last version, 1.0.2. Chris@4: Chris@4: * Further robustification against corrupted compressed data. Chris@4: There are currently no known bitstreams which can cause the Chris@4: decompressor to crash, loop or access memory which does not Chris@4: belong to it. If you are using bzip2 or the library to Chris@4: decompress bitstreams from untrusted sources, an upgrade Chris@4: to 1.0.3 is recommended. This fixes CAN-2005-1260. Chris@4: Chris@4: * The documentation has been converted to XML, from which html Chris@4: and pdf can be derived. Chris@4: Chris@4: * Various minor bugs in the documentation have been fixed. Chris@4: Chris@4: * Fixes for various compilation warnings with newer versions of Chris@4: gcc, and on 64-bit platforms. Chris@4: Chris@4: * The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2. Chris@4: This has been fixed. Chris@4: Chris@4: Chris@4: 1.0.4 (20 Dec 06) Chris@4: ~~~~~~~~~~~~~~~~~ Chris@4: Fixes some minor bugs since the last version, 1.0.3. Chris@4: Chris@4: * Fix file permissions race problem (CAN-2005-0953). Chris@4: Chris@4: * Avoid possible segfault in BZ2_bzclose. From Coverity's NetBSD Chris@4: scan. Chris@4: Chris@4: * 'const'/prototype cleanups in the C code. Chris@4: Chris@4: * Change default install location to /usr/local, and handle multiple Chris@4: 'make install's without error. Chris@4: Chris@4: * Sanitise file names more carefully in bzgrep. Fixes CAN-2005-0758 Chris@4: to the extent that applies to bzgrep. Chris@4: Chris@4: * Use 'mktemp' rather than 'tempfile' in bzdiff. Chris@4: Chris@4: * Tighten up a couple of assertions in blocksort.c following automated Chris@4: analysis. Chris@4: Chris@4: * Fix minor doc/comment bugs. Chris@4: Chris@4: Chris@4: 1.0.5 (10 Dec 07) Chris@4: ~~~~~~~~~~~~~~~~~ Chris@4: Security fix only. Fixes CERT-FI 20469 as it applies to bzip2. Chris@4: Chris@4: Chris@4: 1.0.6 (6 Sept 10) Chris@4: ~~~~~~~~~~~~~~~~~ Chris@4: Chris@4: * Security fix for CVE-2010-0405. This was reported by Mikolaj Chris@4: Izdebski. Chris@4: Chris@4: * Make the documentation build on Ubuntu 10.04