Home | History | Annotate | Download | only in bzip2
      1  ------------------------------------------------------------------
      2  This file is part of bzip2/libbzip2, a program and library for
      3  lossless, block-sorting data compression.
      4 
      5  bzip2/libbzip2 version 1.0.6 of 6 September 2010
      6  Copyright (C) 1996-2010 Julian Seward <jseward (a] bzip.org>
      7 
      8  Please read the WARNING, DISCLAIMER and PATENTS sections in the 
      9  README file.
     10 
     11  This program is released under the terms of the license contained
     12  in the file LICENSE.
     13  ------------------------------------------------------------------
     14 
     15 
     16 0.9.0
     17 ~~~~~
     18 First version.
     19 
     20 
     21 0.9.0a
     22 ~~~~~~
     23 Removed 'ranlib' from Makefile, since most modern Unix-es 
     24 don't need it, or even know about it.
     25 
     26 
     27 0.9.0b
     28 ~~~~~~
     29 Fixed a problem with error reporting in bzip2.c.  This does not effect
     30 the library in any way.  Problem is: versions 0.9.0 and 0.9.0a (of the
     31 program proper) compress and decompress correctly, but give misleading
     32 error messages (internal panics) when an I/O error occurs, instead of
     33 reporting the problem correctly.  This shouldn't give any data loss
     34 (as far as I can see), but is confusing.
     35 
     36 Made the inline declarations disappear for non-GCC compilers.
     37 
     38 
     39 0.9.0c
     40 ~~~~~~
     41 Fixed some problems in the library pertaining to some boundary cases.
     42 This makes the library behave more correctly in those situations.  The
     43 fixes apply only to features (calls and parameters) not used by
     44 bzip2.c, so the non-fixedness of them in previous versions has no
     45 effect on reliability of bzip2.c.
     46 
     47 In bzlib.c:
     48    * made zero-length BZ_FLUSH work correctly in bzCompress().
     49    * fixed bzWrite/bzRead to ignore zero-length requests.
     50    * fixed bzread to correctly handle read requests after EOF.
     51    * wrong parameter order in call to bzDecompressInit in
     52      bzBuffToBuffDecompress.  Fixed.
     53 
     54 In compress.c:
     55    * changed setting of nGroups in sendMTFValues() so as to 
     56      do a bit better on small files.  This _does_ effect
     57      bzip2.c.
     58 
     59 
     60 0.9.5a
     61 ~~~~~~
     62 Major change: add a fallback sorting algorithm (blocksort.c)
     63 to give reasonable behaviour even for very repetitive inputs.
     64 Nuked --repetitive-best and --repetitive-fast since they are
     65 no longer useful.
     66 
     67 Minor changes: mostly a whole bunch of small changes/
     68 bugfixes in the driver (bzip2.c).  Changes pertaining to the
     69 user interface are:
     70 
     71    allow decompression of symlink'd files to stdout
     72    decompress/test files even without .bz2 extension
     73    give more accurate error messages for I/O errors
     74    when compressing/decompressing to stdout, don't catch control-C
     75    read flags from BZIP2 and BZIP environment variables
     76    decline to break hard links to a file unless forced with -f
     77    allow -c flag even with no filenames
     78    preserve file ownerships as far as possible
     79    make -s -1 give the expected block size (100k)
     80    add a flag -q --quiet to suppress nonessential warnings
     81    stop decoding flags after --, so files beginning in - can be handled
     82    resolved inconsistent naming: bzcat or bz2cat ?
     83    bzip2 --help now returns 0
     84 
     85 Programming-level changes are:
     86 
     87    fixed syntax error in GET_LL4 for Borland C++ 5.02
     88    let bzBuffToBuffDecompress return BZ_DATA_ERROR{_MAGIC}
     89    fix overshoot of mode-string end in bzopen_or_bzdopen
     90    wrapped bzlib.h in #ifdef __cplusplus ... extern "C" { ... }
     91    close file handles under all error conditions
     92    added minor mods so it compiles with DJGPP out of the box
     93    fixed Makefile so it doesn't give problems with BSD make
     94    fix uninitialised memory reads in dlltest.c
     95 
     96 0.9.5b
     97 ~~~~~~
     98 Open stdin/stdout in binary mode for DJGPP.
     99 
    100 0.9.5c
    101 ~~~~~~
    102 Changed BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1.  The + 1
    103 version could cause the sorted order to be wrong in some extremely
    104 obscure cases.  Also changed setting of quadrant in blocksort.c.
    105 
    106 0.9.5d
    107 ~~~~~~
    108 The only functional change is to make bzlibVersion() in the library
    109 return the correct string.  This has no effect whatsoever on the
    110 functioning of the bzip2 program or library.  Added a couple of casts
    111 so the library compiles without warnings at level 3 in MS Visual
    112 Studio 6.0.  Included a Y2K statement in the file Y2K_INFO.  All other
    113 changes are minor documentation changes.
    114 
    115 1.0
    116 ~~~
    117 Several minor bugfixes and enhancements:
    118 
    119 * Large file support.  The library uses 64-bit counters to
    120   count the volume of data passing through it.  bzip2.c 
    121   is now compiled with -D_FILE_OFFSET_BITS=64 to get large
    122   file support from the C library.  -v correctly prints out
    123   file sizes greater than 4 gigabytes.  All these changes have
    124   been made without assuming a 64-bit platform or a C compiler
    125   which supports 64-bit ints, so, except for the C library
    126   aspect, they are fully portable.
    127 
    128 * Decompression robustness.  The library/program should be
    129   robust to any corruption of compressed data, detecting and
    130   handling _all_ corruption, instead of merely relying on
    131   the CRCs.  What this means is that the program should 
    132   never crash, given corrupted data, and the library should
    133   always return BZ_DATA_ERROR.
    134 
    135 * Fixed an obscure race-condition bug only ever observed on
    136   Solaris, in which, if you were very unlucky and issued
    137   control-C at exactly the wrong time, both input and output
    138   files would be deleted.
    139 
    140 * Don't run out of file handles on test/decompression when
    141   large numbers of files have invalid magic numbers.
    142 
    143 * Avoid library namespace pollution.  Prefix all exported 
    144   symbols with BZ2_.
    145 
    146 * Minor sorting enhancements from my DCC2000 paper.
    147 
    148 * Advance the version number to 1.0, so as to counteract the
    149   (false-in-this-case) impression some people have that programs 
    150   with version numbers less than 1.0 are in some way, experimental,
    151   pre-release versions.
    152 
    153 * Create an initial Makefile-libbz2_so to build a shared library.
    154   Yes, I know I should really use libtool et al ...
    155 
    156 * Make the program exit with 2 instead of 0 when decompression
    157   fails due to a bad magic number (ie, an invalid bzip2 header).
    158   Also exit with 1 (as the manual claims :-) whenever a diagnostic
    159   message would have been printed AND the corresponding operation 
    160   is aborted, for example
    161      bzip2: Output file xx already exists.
    162   When a diagnostic message is printed but the operation is not 
    163   aborted, for example
    164      bzip2: Can't guess original name for wurble -- using wurble.out
    165   then the exit value 0 is returned, unless some other problem is
    166   also detected.
    167 
    168   I think it corresponds more closely to what the manual claims now.
    169 
    170 
    171 1.0.1
    172 ~~~~~
    173 * Modified dlltest.c so it uses the new BZ2_ naming scheme.
    174 * Modified makefile-msc to fix minor build probs on Win2k.
    175 * Updated README.COMPILATION.PROBLEMS.
    176 
    177 There are no functionality changes or bug fixes relative to version
    178 1.0.0.  This is just a documentation update + a fix for minor Win32
    179 build problems.  For almost everyone, upgrading from 1.0.0 to 1.0.1 is
    180 utterly pointless.  Don't bother.
    181 
    182 
    183 1.0.2
    184 ~~~~~
    185 A bug fix release, addressing various minor issues which have appeared
    186 in the 18 or so months since 1.0.1 was released.  Most of the fixes
    187 are to do with file-handling or documentation bugs.  To the best of my
    188 knowledge, there have been no data-loss-causing bugs reported in the
    189 compression/decompression engine of 1.0.0 or 1.0.1.
    190 
    191 Note that this release does not improve the rather crude build system
    192 for Unix platforms.  The general plan here is to autoconfiscate/
    193 libtoolise 1.0.2 soon after release, and release the result as 1.1.0
    194 or perhaps 1.2.0.  That, however, is still just a plan at this point.
    195 
    196 Here are the changes in 1.0.2.  Bug-reporters and/or patch-senders in
    197 parentheses.
    198 
    199 * Fix an infinite segfault loop in 1.0.1 when a directory is
    200   encountered in -f (force) mode.
    201      (Trond Eivind Glomsrod, Nicholas Nethercote, Volker Schmidt)
    202 
    203 * Avoid double fclose() of output file on certain I/O error paths.
    204      (Solar Designer)
    205 
    206 * Don't fail with internal error 1007 when fed a long stream (> 48MB)
    207   of byte 251.  Also print useful message suggesting that 1007s may be
    208   caused by bad memory.
    209      (noticed by Juan Pedro Vallejo, fixed by me)
    210 
    211 * Fix uninitialised variable silly bug in demo prog dlltest.c.
    212      (Jorj Bauer)
    213 
    214 * Remove 512-MB limitation on recovered file size for bzip2recover
    215   on selected platforms which support 64-bit ints.  At the moment
    216   all GCC supported platforms, and Win32.
    217      (me, Alson van der Meulen)
    218 
    219 * Hard-code header byte values, to give correct operation on platforms
    220   using EBCDIC as their native character set (IBM's OS/390).
    221      (Leland Lucius)
    222 
    223 * Copy file access times correctly.
    224      (Marty Leisner)
    225 
    226 * Add distclean and check targets to Makefile.
    227      (Michael Carmack)
    228 
    229 * Parameterise use of ar and ranlib in Makefile.  Also add $(LDFLAGS).
    230      (Rich Ireland, Bo Thorsen)
    231 
    232 * Pass -p (create parent dirs as needed) to mkdir during make install.
    233      (Jeremy Fusco)
    234 
    235 * Dereference symlinks when copying file permissions in -f mode.
    236      (Volker Schmidt)
    237 
    238 * Majorly simplify implementation of uInt64_qrm10.
    239      (Bo Lindbergh)
    240 
    241 * Check the input file still exists before deleting the output one,
    242   when aborting in cleanUpAndFail().
    243      (Joerg Prante, Robert Linden, Matthias Krings)
    244 
    245 Also a bunch of patches courtesy of Philippe Troin, the Debian maintainer
    246 of bzip2:
    247 
    248 * Wrapper scripts (with manpages): bzdiff, bzgrep, bzmore.
    249 
    250 * Spelling changes and minor enhancements in bzip2.1.
    251 
    252 * Avoid race condition between creating the output file and setting its
    253   interim permissions safely, by using fopen_output_safely().
    254   No changes to bzip2recover since there is no issue with file
    255   permissions there.
    256 
    257 * do not print senseless report with -v when compressing an empty
    258   file.
    259 
    260 * bzcat -f works on non-bzip2 files.
    261 
    262 * do not try to escape shell meta-characters on unix (the shell takes
    263   care of these).
    264 
    265 * added --fast and --best aliases for -1 -9 for gzip compatibility.
    266 
    267 
    268 1.0.3 (15 Feb 05)
    269 ~~~~~~~~~~~~~~~~~
    270 Fixes some minor bugs since the last version, 1.0.2.
    271 
    272 * Further robustification against corrupted compressed data.
    273   There are currently no known bitstreams which can cause the
    274   decompressor to crash, loop or access memory which does not
    275   belong to it.  If you are using bzip2 or the library to 
    276   decompress bitstreams from untrusted sources, an upgrade
    277   to 1.0.3 is recommended.  This fixes CAN-2005-1260.
    278 
    279 * The documentation has been converted to XML, from which html
    280   and pdf can be derived.
    281 
    282 * Various minor bugs in the documentation have been fixed.
    283 
    284 * Fixes for various compilation warnings with newer versions of
    285   gcc, and on 64-bit platforms.
    286 
    287 * The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2.
    288   This has been fixed.
    289 
    290 
    291 1.0.4 (20 Dec 06)
    292 ~~~~~~~~~~~~~~~~~
    293 Fixes some minor bugs since the last version, 1.0.3.
    294 
    295 * Fix file permissions race problem (CAN-2005-0953).
    296 
    297 * Avoid possible segfault in BZ2_bzclose.  From Coverity's NetBSD
    298   scan.
    299 
    300 * 'const'/prototype cleanups in the C code.
    301 
    302 * Change default install location to /usr/local, and handle multiple
    303   'make install's without error.
    304 
    305 * Sanitise file names more carefully in bzgrep.  Fixes CAN-2005-0758
    306   to the extent that applies to bzgrep.
    307 
    308 * Use 'mktemp' rather than 'tempfile' in bzdiff.
    309 
    310 * Tighten up a couple of assertions in blocksort.c following automated
    311   analysis.
    312 
    313 * Fix minor doc/comment bugs.
    314 
    315 
    316 1.0.5 (10 Dec 07)
    317 ~~~~~~~~~~~~~~~~~
    318 Security fix only.  Fixes CERT-FI 20469 as it applies to bzip2.
    319 
    320 
    321 1.0.6 (6 Sept 10)
    322 ~~~~~~~~~~~~~~~~~
    323 
    324 * Security fix for CVE-2010-0405.  This was reported by Mikolaj
    325   Izdebski.
    326 
    327 * Make the documentation build on Ubuntu 10.04
    328