summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-arch/pbzip2')
-rw-r--r--app-arch/pbzip2/files/pbzip2-1.1.12-data_truncation_fix.patch142
-rw-r--r--app-arch/pbzip2/pbzip2-1.1.12-r1.ebuild44
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
+}