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.8 of 13 July 2019 6 Copyright (C) 1996-2019 Julian Seward <jseward@acm.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 160.9.0 17~~~~~ 18First version. 19 20 210.9.0a 22~~~~~~ 23Removed 'ranlib' from Makefile, since most modern Unix-es 24don't need it, or even know about it. 25 26 270.9.0b 28~~~~~~ 29Fixed a problem with error reporting in bzip2.c. This does not effect 30the library in any way. Problem is: versions 0.9.0 and 0.9.0a (of the 31program proper) compress and decompress correctly, but give misleading 32error messages (internal panics) when an I/O error occurs, instead of 33reporting the problem correctly. This shouldn't give any data loss 34(as far as I can see), but is confusing. 35 36Made the inline declarations disappear for non-GCC compilers. 37 38 390.9.0c 40~~~~~~ 41Fixed some problems in the library pertaining to some boundary cases. 42This makes the library behave more correctly in those situations. The 43fixes apply only to features (calls and parameters) not used by 44bzip2.c, so the non-fixedness of them in previous versions has no 45effect on reliability of bzip2.c. 46 47In 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 54In 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 600.9.5a 61~~~~~~ 62Major change: add a fallback sorting algorithm (blocksort.c) 63to give reasonable behaviour even for very repetitive inputs. 64Nuked --repetitive-best and --repetitive-fast since they are 65no longer useful. 66 67Minor changes: mostly a whole bunch of small changes/ 68bugfixes in the driver (bzip2.c). Changes pertaining to the 69user 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 85Programming-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 960.9.5b 97~~~~~~ 98Open stdin/stdout in binary mode for DJGPP. 99 1000.9.5c 101~~~~~~ 102Changed BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1. The + 1 103version could cause the sorted order to be wrong in some extremely 104obscure cases. Also changed setting of quadrant in blocksort.c. 105 1060.9.5d 107~~~~~~ 108The only functional change is to make bzlibVersion() in the library 109return the correct string. This has no effect whatsoever on the 110functioning of the bzip2 program or library. Added a couple of casts 111so the library compiles without warnings at level 3 in MS Visual 112Studio 6.0. Included a Y2K statement in the file Y2K_INFO. All other 113changes are minor documentation changes. 114 1151.0 116~~~ 117Several 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 1711.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 177There are no functionality changes or bug fixes relative to version 1781.0.0. This is just a documentation update + a fix for minor Win32 179build problems. For almost everyone, upgrading from 1.0.0 to 1.0.1 is 180utterly pointless. Don't bother. 181 182 1831.0.2 184~~~~~ 185A bug fix release, addressing various minor issues which have appeared 186in the 18 or so months since 1.0.1 was released. Most of the fixes 187are to do with file-handling or documentation bugs. To the best of my 188knowledge, there have been no data-loss-causing bugs reported in the 189compression/decompression engine of 1.0.0 or 1.0.1. 190 191Note that this release does not improve the rather crude build system 192for Unix platforms. The general plan here is to autoconfiscate/ 193libtoolise 1.0.2 soon after release, and release the result as 1.1.0 194or perhaps 1.2.0. That, however, is still just a plan at this point. 195 196Here are the changes in 1.0.2. Bug-reporters and/or patch-senders in 197parentheses. 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 245Also a bunch of patches courtesy of Philippe Troin, the Debian maintainer 246of 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 2681.0.3 (15 Feb 05) 269~~~~~~~~~~~~~~~~~ 270Fixes 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 2911.0.4 (20 Dec 06) 292~~~~~~~~~~~~~~~~~ 293Fixes 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 3161.0.5 (10 Dec 07) 317~~~~~~~~~~~~~~~~~ 318Security fix only. Fixes CERT-FI 20469 as it applies to bzip2. 319 320 3211.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 3291.0.7 (27 Jun 19) 330~~~~~~~~~~~~~~~~~ 331 332* Fix undefined behavior in the macros SET_BH, CLEAR_BH, & ISSET_BH 333 334* bzip2: Fix return value when combining --test,-t and -q. 335 336* bzip2recover: Fix buffer overflow for large argv[0] 337 338* bzip2recover: Fix use after free issue with outFile (CVE-2016-3189) 339 340* Make sure nSelectors is not out of range (CVE-2019-12900) 341 3421.0.8 (13 Jul 19) 343~~~~~~~~~~~~~~~~~ 344 345* Accept as many selectors as the file format allows. 346 This relaxes the fix for CVE-2019-12900 from 1.0.7 347 so that bzip2 allows decompression of bz2 files that 348 use (too) many selectors again. 349 350* Fix handling of large (> 4GB) files on Windows. 351 352* Cleanup of bzdiff and bzgrep scripts so they don't use 353 any bash extensions and handle multiple archives correctly. 354 355* There is now a bz2-files testsuite at 356 https://sourceware.org/git/bzip2-tests.git 357