Bug#687220: unblock: xz-utils/5.1.1alpha+20120614-2
Package: release.debian.org
User: release.debian.org@packages.debian.org
Usertags: unblock
Tags: wheezy
Hi,
Unfortunately there has not been a stable release on the 5.1.y branch
of XZ Utils. This update is an attempt to make the best of what we
have, by:
- in existing features, matching behavior of the upstream "master"
branch as closely as possible
- not adding any new features
- documenting the relationship to upstream (patches applied
and patches not applied) in README.Debian
I've been using these changes for a couple of months now. Not
uploaded yet, so I can make small tweaks if you have good ideas for
some. Diffstat with patches applied, excluding debian/patches:
debian/changelog | 15 ++++++++++
debian/xz-utils.README.Debian | 49 ++++++++++++++++++++++++++++++--
src/liblzma/lzma/lzma_decoder.c | 8 ++++-
src/liblzma/rangecoder/range_decoder.h | 12 ++++++--
src/xz/list.c | 6 ++--
src/xz/xz.1 | 18 +++++++++++-
6 files changed, 96 insertions(+), 12 deletions(-)
debdiff attached. Thoughts?
Thanks for your hard work,
Jonathan
diff -Nru xz-utils-5.1.1alpha+20120614/debian/changelog xz-utils-5.1.1alpha+20120614/debian/changelog
--- xz-utils-5.1.1alpha+20120614/debian/changelog 2012-06-16 13:03:18.000000000 -0700
+++ xz-utils-5.1.1alpha+20120614/debian/changelog 2012-09-10 14:35:33.000000000 -0700
@@ -1,3 +1,18 @@
+xz-utils (5.1.1alpha+20120614-2) unstable; urgency=low
+
+ * Apply fixes from 5.1.2alpha. Closes: #685220.
+ - liblzma: report a LZMA_DATA_ERROR when range encoded data starts
+ with a nonzero byte. This is a sanity check to catch malformed
+ files that no known encoders produce.
+ - xz -v -v --list: Support for decompressing blocks with
+ zero-length uncompressed data was added in xz 5.0.2, not 5.0.3.
+ - xz.1: "xz --robot -v -v --list" gained a "minimum xz version to
+ decompress" field.
+ * xz-utils/README.Debian: Document differences from upstream.
+ Closes: #685217.
+
+ -- Jonathan Nieder <jrnieder@gmail.com> Mon, 10 Sep 2012 14:35:33 -0700
+
xz-utils (5.1.1alpha+20120614-1) unstable; urgency=low
* New snapshot, taken from upstream commit f1675f76.
diff -Nru xz-utils-5.1.1alpha+20120614/debian/patches/decoder-check-first-0x00 xz-utils-5.1.1alpha+20120614/debian/patches/decoder-check-first-0x00
--- xz-utils-5.1.1alpha+20120614/debian/patches/decoder-check-first-0x00 1969-12-31 16:00:00.000000000 -0800
+++ xz-utils-5.1.1alpha+20120614/debian/patches/decoder-check-first-0x00 2012-09-10 14:10:45.000000000 -0700
@@ -0,0 +1,69 @@
+From: Lasse Collin <lasse.collin@tukaani.org>
+Date: Thu, 28 Jun 2012 10:47:49 +0300
+Subject: liblzma: Check that the first byte of range encoded data is 0x00.
+
+It is just to be more pedantic and thus perhaps catch broken
+files slightly earlier.
+
+Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
+---
+ src/liblzma/lzma/lzma_decoder.c | 8 ++++++--
+ src/liblzma/rangecoder/range_decoder.h | 12 +++++++++---
+ 2 files changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/src/liblzma/lzma/lzma_decoder.c b/src/liblzma/lzma/lzma_decoder.c
+index 5abbc0d..b8f9317 100644
+--- a/src/liblzma/lzma/lzma_decoder.c
++++ b/src/liblzma/lzma/lzma_decoder.c
+@@ -289,8 +289,12 @@ lzma_decode(lzma_coder *restrict coder, lzma_dict *restrict dictptr,
+ // Initialization //
+ ////////////////////
+
+- if (!rc_read_init(&coder->rc, in, in_pos, in_size))
+- return LZMA_OK;
++ {
++ const lzma_ret ret = rc_read_init(
++ &coder->rc, in, in_pos, in_size);
++ if (ret != LZMA_STREAM_END)
++ return ret;
++ }
+
+ ///////////////
+ // Variables //
+diff --git a/src/liblzma/rangecoder/range_decoder.h b/src/liblzma/rangecoder/range_decoder.h
+index fb96180..e0b051f 100644
+--- a/src/liblzma/rangecoder/range_decoder.h
++++ b/src/liblzma/rangecoder/range_decoder.h
+@@ -25,20 +25,26 @@ typedef struct {
+
+
+ /// Reads the first five bytes to initialize the range decoder.
+-static inline bool
++static inline lzma_ret
+ rc_read_init(lzma_range_decoder *rc, const uint8_t *restrict in,
+ size_t *restrict in_pos, size_t in_size)
+ {
+ while (rc->init_bytes_left > 0) {
+ if (*in_pos == in_size)
+- return false;
++ return LZMA_OK;
++
++ // The first byte is always 0x00. It could have been omitted
++ // in LZMA2 but it wasn't, so one byte is wasted in every
++ // LZMA2 chunk.
++ if (rc->init_bytes_left == 5 && in[*in_pos] != 0x00)
++ return LZMA_DATA_ERROR;
+
+ rc->code = (rc->code << 8) | in[*in_pos];
+ ++*in_pos;
+ --rc->init_bytes_left;
+ }
+
+- return true;
++ return LZMA_STREAM_END;
+ }
+
+
+--
+1.7.9.6 (Apple Git-31.1)
+
diff -Nru xz-utils-5.1.1alpha+20120614/debian/patches/man-date xz-utils-5.1.1alpha+20120614/debian/patches/man-date
--- xz-utils-5.1.1alpha+20120614/debian/patches/man-date 1969-12-31 16:00:00.000000000 -0800
+++ xz-utils-5.1.1alpha+20120614/debian/patches/man-date 2012-09-10 14:10:45.000000000 -0700
@@ -0,0 +1,25 @@
+From: Lasse Collin <lasse.collin@tukaani.org>
+Date: Fri, 22 Jun 2012 14:34:03 +0300
+Subject: xz: Update man page date to match the latest update.
+
+Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
+---
+ src/xz/xz.1 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/xz/xz.1 b/src/xz/xz.1
+index 3ff89f0..cb8cd1e 100644
+--- a/src/xz/xz.1
++++ b/src/xz/xz.1
+@@ -5,7 +5,7 @@
+ .\" This file has been put into the public domain.
+ .\" You can do whatever you want with this file.
+ .\"
+-.TH XZ 1 "2011-04-11" "Tukaani" "XZ Utils"
++.TH XZ 1 "2012-05-27" "Tukaani" "XZ Utils"
+ .
+ .SH NAME
+ xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files
+--
+1.7.9.6 (Apple Git-31.1)
+
diff -Nru xz-utils-5.1.1alpha+20120614/debian/patches/man-xz-lvv-minver xz-utils-5.1.1alpha+20120614/debian/patches/man-xz-lvv-minver
--- xz-utils-5.1.1alpha+20120614/debian/patches/man-xz-lvv-minver 1969-12-31 16:00:00.000000000 -0800
+++ xz-utils-5.1.1alpha+20120614/debian/patches/man-xz-lvv-minver 2012-09-10 14:10:45.000000000 -0700
@@ -0,0 +1,55 @@
+From: Lasse Collin <lasse.collin@tukaani.org>
+Date: Sun, 1 Jul 2012 18:44:33 +0300
+Subject: xz: Update the man page about the new field in --robot -lvv.
+
+Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
+---
+ src/xz/xz.1 | 18 +++++++++++++++++-
+ 1 file changed, 17 insertions(+), 1 deletion(-)
+
+diff --git a/src/xz/xz.1 b/src/xz/xz.1
+index cb8cd1e..4da09ba 100644
+--- a/src/xz/xz.1
++++ b/src/xz/xz.1
+@@ -5,7 +5,7 @@
+ .\" This file has been put into the public domain.
+ .\" You can do whatever you want with this file.
+ .\"
+-.TH XZ 1 "2012-05-27" "Tukaani" "XZ Utils"
++.TH XZ 1 "2012-07-01" "Tukaani" "XZ Utils"
+ .
+ .SH NAME
+ xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files
+@@ -1889,6 +1889,14 @@ or
+ .B no
+ indicating if all block headers have both compressed size and
+ uncompressed size stored in them
++.PP
++.I Since
++.B xz
++.I 5.1.2alpha:
++.IP 4. 4
++Minimum
++.B xz
++version required to decompress the file
+ .RE
+ .PD
+ .PP
+@@ -1939,6 +1947,14 @@ or
+ .B no
+ indicating if all block headers have both compressed size and
+ uncompressed size stored in them
++.PP
++.I Since
++.B xz
++.I 5.1.2alpha:
++.IP 12. 4
++Minimum
++.B xz
++version required to decompress the file
+ .RE
+ .PD
+ .PP
+--
+1.7.9.6 (Apple Git-31.1)
+
diff -Nru xz-utils-5.1.1alpha+20120614/debian/patches/series xz-utils-5.1.1alpha+20120614/debian/patches/series
--- xz-utils-5.1.1alpha+20120614/debian/patches/series 2012-06-16 04:30:37.000000000 -0700
+++ xz-utils-5.1.1alpha+20120614/debian/patches/series 2012-09-10 14:10:45.000000000 -0700
@@ -2,3 +2,7 @@
abi-version-script
abi-liblzma2-compat
configure-liblzma2-compat
+man-date
+man-xz-lvv-minver
+xz-lvv-empty-block-minver
+decoder-check-first-0x00
diff -Nru xz-utils-5.1.1alpha+20120614/debian/patches/xz-lvv-empty-block-minver xz-utils-5.1.1alpha+20120614/debian/patches/xz-lvv-empty-block-minver
--- xz-utils-5.1.1alpha+20120614/debian/patches/xz-lvv-empty-block-minver 1969-12-31 16:00:00.000000000 -0800
+++ xz-utils-5.1.1alpha+20120614/debian/patches/xz-lvv-empty-block-minver 2012-09-10 14:10:45.000000000 -0700
@@ -0,0 +1,38 @@
+From: Lasse Collin <lasse.collin@tukaani.org>
+Date: Wed, 4 Jul 2012 19:58:23 +0300
+Subject: xz: Fix the version number printed by xz -lvv.
+
+The decoder bug was fixed in 5.0.2 instead of 5.0.3.
+
+Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
+---
+ src/xz/list.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/xz/list.c b/src/xz/list.c
+index e71fbe2..a9e0adb 100644
+--- a/src/xz/list.c
++++ b/src/xz/list.c
+@@ -482,7 +482,7 @@ parse_block_header(file_pair *pair, const lzma_index_iter *iter,
+ // Determine the minimum XZ Utils version that supports this Block.
+ //
+ // Currently the only thing that 5.0.0 doesn't support is empty
+- // LZMA2 Block. This bug was fixed in 5.0.3.
++ // LZMA2 Block. This decoder bug was fixed in 5.0.2.
+ {
+ size_t i = 0;
+ while (filters[i + 1].id != LZMA_VLI_UNKNOWN)
+@@ -490,8 +490,8 @@ parse_block_header(file_pair *pair, const lzma_index_iter *iter,
+
+ if (filters[i].id == LZMA_FILTER_LZMA2
+ && iter->block.uncompressed_size == 0
+- && xfi->min_version < 50000032U)
+- xfi->min_version = 50000032U;
++ && xfi->min_version < 50000022U)
++ xfi->min_version = 50000022U;
+ }
+
+ // Convert the filter chain to human readable form.
+--
+1.7.9.6 (Apple Git-31.1)
+
diff -Nru xz-utils-5.1.1alpha+20120614/debian/xz-utils.README.Debian xz-utils-5.1.1alpha+20120614/debian/xz-utils.README.Debian
--- xz-utils-5.1.1alpha+20120614/debian/xz-utils.README.Debian 2012-06-16 03:58:14.000000000 -0700
+++ xz-utils-5.1.1alpha+20120614/debian/xz-utils.README.Debian 2012-09-10 14:35:28.000000000 -0700
@@ -3,8 +3,9 @@
Contents:
1. History
- 2. LZMA Utils compatibility
- 3. Configuration
+ 2. Differences from standard XZ Utils
+ 3. LZMA Utils compatibility
+ 4. Configuration
History
-------
@@ -14,6 +15,48 @@
of magic number, but it gets enough use to still need to be supported.
See /usr/share/doc/xz-utils/history.txt.gz for the full story.
+Differences from standard XZ Utils
+----------------------------------
+
+XZ Utils 5.1.y has some experimental features which are disabled in
+Debian to allow interfaces to evolve. Debian liblzma is also modified
+to avoid breakage when the same process loads liblzma2 from Debian 6.0
+(squeeze) and liblzma5.
+
+abi-threaded-encoder
+ Disable threaded compression in liblzma and xz.
+
+abi-version-script
+ liblzma: Do not pretend to satisfy dependencies on XZ_5.1.1alpha.
+
+abi-liblzma2-compat, configure-liblzma2-compat
+ Do not check reserved fields past the historical end of the
+ lzma_stream structure if liblzma.so.2 is loaded in the same
+ process image. Likewise when linked statically.
+ (See bug #649522.)
+
+man-date, man-xz-lvv-minver (from upstream)
+ Document the "Minimum version required to decompress" field of
+ "xz --robot -v -v --list" output.
+
+xz-lvv-empty-block-minver (from upstream)
+ Fix the version number printed by "xz -lvv" for files with Blocks
+ of zero uncompressed_size: the decoder bug preventing reading such
+ files was fixed in xz 5.0.2, not 5.0.3.
+
+decoder-check-first-0x00 (from upstream)
+ Check that the first byte of range encoded data is zero to catch
+ broken files sooner.
+
+Changes in 5.1.2alpha not applied:
+
+ Docs: Language fix to 01_compress_easy.c
+ xz: Add incomplete support for --block-list
+ INSTALL: Document --enable-symbol-versions
+ configure: Add a comment about *-linux tuples for clarity
+ TODO: Warn that threads and fork() do not mix well
+ Bump the version number and update NEWS for 5.1.2alpha
+
LZMA Utils compatibility
------------------------
@@ -44,4 +87,4 @@
See the "Memory usage" section of the xz(1) manual page for details.
- -- Jonathan Nieder <jrnieder@gmail.com> Fri, 18 May 2012 01:14:16 -0500
+ -- Jonathan Nieder <jrnieder@gmail.com> Mon, 10 Sep 2012 14:35:27 -0700
Reply to: