commit: a00cf04f5b8d1c2b284c21cf3670b0d1a1a9ac51 Author: Lars Wendler <polynomial-c <AT> gentoo <DOT> org> AuthorDate: Mon Dec 14 10:20:56 2015 +0000 Commit: Lars Wendler <polynomial-c <AT> gentoo <DOT> org> CommitDate: Mon Dec 14 10:20:56 2015 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a00cf04f
app-arch/pbzip2: Revbump to fix possible data corruption (#567952). Package-Manager: portage-2.2.26 Signed-off-by: Lars Wendler <polynomial-c <AT> gentoo.org> .../files/pbzip2-1.1.12-data_truncation_fix.patch | 142 +++++++++++++++++++++ app-arch/pbzip2/pbzip2-1.1.12-r1.ebuild | 44 +++++++ 2 files changed, 186 insertions(+) diff --git a/app-arch/pbzip2/files/pbzip2-1.1.12-data_truncation_fix.patch b/app-arch/pbzip2/files/pbzip2-1.1.12-data_truncation_fix.patch new file mode 100644 index 0000000..0ce62e7 --- /dev/null +++ b/app-arch/pbzip2/files/pbzip2-1.1.12-data_truncation_fix.patch @@ -0,0 +1,142 @@ +https://bugs.launchpad.net/pbzip2/+bug/1524909 +https://bugs.gentoo.org/567952 + + +=== modified file 'pbzip2.cpp' +--- pbzip2.cpp 2014-12-21 10:20:27 +0000 ++++ pbzip2.cpp 2015-12-11 00:14:31 +0000 +@@ -2083,6 +2083,17 @@ + return 0; + } + ++void close_streams(FILE *stream, FILE *zStream) ++{ ++ if (stream != NULL) ++ fflush(stream); ++ ++ if (zStream != NULL && zStream != stdin) ++ fclose(zStream); ++ if (stream != NULL && stream != stdout) ++ fclose(stream); ++} ++ + /* + ********************************************************* + */ +@@ -2125,9 +2136,7 @@ + // check file stream for errors + if (ferror(zStream)) + { +- if (zStream != stdin) +- fclose(zStream); +- ++ close_streams(stream, zStream); + handle_error(EF_EXIT, -1, + "pbzip2: *ERROR: Problem with input stream of file [%s]! Aborting...\n", InFilename); + return -1; +@@ -2155,9 +2164,7 @@ + // check file stream for errors + if (ferror(stream)) + { +- if (stream != stdout) +- fclose(stream); +- ++ close_streams(stream, zStream); + handle_error(EF_EXIT, -1, + "pbzip2: *ERROR: Problem with output stream of file [%s]! Aborting...\n", InFilename); + return -1; +@@ -2169,10 +2176,7 @@ + if (syncGetTerminateFlag() != 0) + { + fprintf (stderr, "directdecompress: terminating1 - terminateFlag set\n"); +- if (zStream != stdin) +- fclose(zStream); +- if (stream != stdout) +- fclose(stream); ++ close_streams(stream, zStream); + return -1; + } + +@@ -2180,11 +2184,8 @@ + if (bzf == NULL || bzerr != BZ_OK) + { + ret = testBZ2ErrorHandling(bzerr, bzf, streamNo); +- if (zStream != stdin) +- fclose(zStream); +- if (stream != stdout) +- fclose(stream); +- ++ close_streams(stream, zStream); ++ + if (ret != 0) + { + syncSetTerminateFlag(1); +@@ -2200,10 +2201,7 @@ + if (syncGetTerminateFlag() != 0) + { + fprintf (stderr, "directdecompress: terminating2 - terminateFlag set\n"); +- if (zStream != stdin) +- fclose(zStream); +- if (stream != stdout) +- fclose(stream); ++ close_streams(stream, zStream); + return -1; + } + +@@ -2225,11 +2223,8 @@ + if (ferror(zStream)) + { + ret = testBZ2ErrorHandling(bzerr, bzf, streamNo); +- if (zStream != stdin) +- fclose(zStream); +- if (stream != stdout) +- fclose(stream); +- ++ close_streams(stream, zStream); ++ + if (ret != 0) + { + syncSetTerminateFlag(1); +@@ -2242,11 +2237,8 @@ + if (ferror(stream)) + { + ret = testBZ2ErrorHandling(bzerr, bzf, streamNo); +- if (zStream != stdin) +- fclose(zStream); +- if (stream != stdout) +- fclose(stream); +- ++ close_streams(stream, zStream); ++ + if (ret != 0) + { + syncSetTerminateFlag(1); +@@ -2263,11 +2255,8 @@ + if (ferror(stream)) + { + ret = testBZ2ErrorHandling(bzerr, bzf, streamNo); +- if (zStream != stdin) +- fclose(zStream); +- if (stream != stdout) +- fclose(stream); +- ++ close_streams(stream, zStream); ++ + if (ret != 0) + { + syncSetTerminateFlag(1); +@@ -2278,11 +2267,8 @@ + if (bzerr != BZ_STREAM_END) + { + ret = testBZ2ErrorHandling(bzerr, bzf, streamNo); +- if (zStream != stdin) +- fclose(zStream); +- if (stream != stdout) +- fclose(stream); +- ++ close_streams(stream, zStream); ++ + if (ret != 0) + { + syncSetTerminateFlag(1); + diff --git a/app-arch/pbzip2/pbzip2-1.1.12-r1.ebuild b/app-arch/pbzip2/pbzip2-1.1.12-r1.ebuild new file mode 100644 index 0000000..a878d8d --- /dev/null +++ b/app-arch/pbzip2/pbzip2-1.1.12-r1.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit flag-o-matic eutils + +DESCRIPTION="Parallel bzip2 (de)compressor using libbz2" +HOMEPAGE="http://compression.ca/pbzip2/ https://launchpad.net/pbzip2" +SRC_URI="https://launchpad.net/pbzip2/${PV:0:3}/${PV}/+download/${P}.tar.gz" + +LICENSE="BZIP2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos" +IUSE="static symlink" + +LIB_DEPEND="app-arch/bzip2[static-libs(+)]" +RDEPEND=" + !static? ( ${LIB_DEPEND//\[static-libs(+)]} ) + symlink? ( !app-arch/lbzip2[symlink] )" +DEPEND="${RDEPEND} + static? ( ${LIB_DEPEND} )" + +src_prepare() { + epatch "${FILESDIR}"/${PN}-1.1.10-makefile.patch \ + "${FILESDIR}"/${P}-data_truncation_fix.patch + tc-export CXX + use static && append-ldflags -static +} + +src_install() { + dobin pbzip2 + dodoc AUTHORS ChangeLog README + doman pbzip2.1 + dosym pbzip2 /usr/bin/pbunzip2 + + if use symlink ; then + local s + for s in bzip2 bunzip2 bzcat ; do + dosym pbzip2 /usr/bin/${s} + done + fi +}