All releases of Lbzip2


Release Notes: This release fixes a use-after-free security vulnerability introduced in version 2.0. All users are recommended to update to version 2.1.


Release Notes: In this release, lbzip2 writes a single compressed stream per bz2 file instead of multiple concatenated streams. It doesn't decompress streams embedded within trailing garbage. It detects and rejects more kinds of invalid bz2 files. Relying on the independent bzip2 stack written by the new maintainer, lbzip2-2.0 features significantly improved (de)compression speed and robustness. In verbose mode, the compression ratio and progress information is displayed for each file. Decompression failures result in more detailed messages now. Lbzip2-2.x is licensed under the GPL v3.0 or any later version.


Release Notes: In this release, if lbzip2 intends to exit with status 1 due to any fatal error, but any SIGPIPE or SIGXFSZ with an inherited SIG_DFL action was generated for lbzip2 previously, then lbzip2 terminates by way of one of the said signals, after cleaning up any interrupted output file. This should improve compatibility with GNU tar when it spawns lbzip2 as a filter and closes the pipe between them early, before it receives an EOF from lbzip2.


Release Notes: Building lbzip2 on Debian Unstable showed that the "lfs.sh" build script, due to a typo, did not invoke the "getconf" utility in a SUSv2-conformant way. This bug has been corrected.


Release Notes: Code examination revealed that lbzip2-0.18 introduced a race between the following two code paths: the muxer thread displays an error message when it encounters a write error; and the main thread, in preparation to terminate the process, frees the output file name after an INT or TERM signal is delivered to it. This bug had a negligible chance to occur, but it was fixed nonetheless.


Release Notes: This release cleans up two theoretical portability problems. The input file's sanity check in the multiple-workers decompressor relied on character constants being encoded in ASCII; such character constants were replaced by their ASCII octet values. "Flexible" array members were replaced by unnamed memory regions following the affected structures, since the "struct hack" idiom entails undefined behavior in C89.


Release Notes: This release works around a GNU/kFreeBSD standards-compliance problem. GNU/kFreeBSD does not define some STREAMS-related errno macros mandated by SUSv2. Consequently, lbzip2-0.18 cannot be built on GNU/kFreeBSD. This version checks if those (and some other) macros are defined before relying on them.


Release Notes: Sanity checks were added to both decompressors. Input FILE operands are now removed. The --keep and --force options were added. Owner, group, permission bits, access time, modification time are copied to regular output files. Logging was cleaned up and internally categorized into INFO, WARNING, and FATAL levels. A separate exit status was introduced for the case when a warning message was printed. The decompressor robustness tests were re-executed. The author has finally replaced bzip2 with lbzip2 on his system.


Release Notes: Uninitialized fields were accessed on the stack in a structure assignment expression. Theoretically, this might have entailed read accesses to trap representations. Since those fields weren't initialized because they weren't used at all in the first place, this portability bug was fixed by introducing a dedicated structure without those fields.


Release Notes: Non-regular input files passed on the command line are skipped (symbolic links are followed, because lbzip2 doesn't remove input files). Instead of exiting, lbzip2 skips input files passed on the command line that it cannot open, or for which it cannot create the corresponding output files. Standard output is also closed with --stdout and file operands, not just in filter mode. Signal handling has been cleaned up; lbzip2 can now be interrupted during skipping many files in a row. Writing an error message to a broken pipe doesn't result in an incomplete output file anymore.
A Java class library for importing and creating PDF documents.