diff options
Diffstat (limited to 'app-arch/pbzip2')
-rw-r--r-- | app-arch/pbzip2/files/pbzip2-1.1.12-data_truncation_fix.patch | 142 | ||||
-rw-r--r-- | app-arch/pbzip2/pbzip2-1.1.12-r1.ebuild | 44 |
2 files changed, 186 insertions, 0 deletions
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 000000000000..0ce62e7a77fe --- /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 000000000000..a878d8dc65d5 --- /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 +} |