commit:     885437bfa2b7d96e6aa6dc846f0123051496b5d3
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Wed Mar  2 05:31:17 2016 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Wed Mar  2 05:33:30 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=885437bf

net-misc/wget: add upstream fix for progress bar #410529 and use subslots 
w/openssl #576128 and w/gnutls #573936

 .../wget/files/wget-1.17.1-progress-bar-segv.patch | 35 ++++++++
 net-misc/wget/wget-1.17.1-r1.ebuild                | 94 ++++++++++++++++++++++
 2 files changed, 129 insertions(+)

diff --git a/net-misc/wget/files/wget-1.17.1-progress-bar-segv.patch 
b/net-misc/wget/files/wget-1.17.1-progress-bar-segv.patch
new file mode 100644
index 0000000..5cfd41f
--- /dev/null
+++ b/net-misc/wget/files/wget-1.17.1-progress-bar-segv.patch
@@ -0,0 +1,35 @@
+From 7099f4899880eaefc2c40a3dc7693ab4174a819b Mon Sep 17 00:00:00 2001
+From: Darshit Shah <[email protected]>
+Date: Mon, 22 Feb 2016 15:08:15 +0100
+Subject: [PATCH] Sanitize value sent to memset to prevent SEGFAULT
+
+---
+ src/progress.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/progress.c b/src/progress.c
+index 93f6246..8a5df21 100644
+--- a/src/progress.c
++++ b/src/progress.c
+@@ -1164,6 +1164,8 @@ create_image (struct bar_progress *bp, double 
dl_total_time, bool done)
+     }
+ 
+   padding = bp->width - count_cols (bp->buffer);
++  assert (padding > 0 && "Padding length became non-positive!");
++  padding = padding > 0 ? padding : 0;
+   memset (p, ' ', padding);
+   p += padding;
+   *p = '\0';
+@@ -1174,6 +1176,9 @@ create_image (struct bar_progress *bp, double 
dl_total_time, bool done)
+    * from the release code since we do not want Wget to crash and burn when 
the
+    * assertion fails. Instead Wget should continue downloading and display a
+    * horrible and irritating progress bar that spams the screen with newlines.
++   *
++   * By default, all assertions are disabled in a Wget build and are enabled
++   * only with the --enable-assert configure option.
+    */
+   assert (count_cols (bp->buffer) == bp->width);
+ }
+-- 
+2.6.2
+

diff --git a/net-misc/wget/wget-1.17.1-r1.ebuild 
b/net-misc/wget/wget-1.17.1-r1.ebuild
new file mode 100644
index 0000000..7959314
--- /dev/null
+++ b/net-misc/wget/wget-1.17.1-r1.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+PYTHON_COMPAT=( python{3_3,3_4} )
+
+inherit flag-o-matic python-any-r1 toolchain-funcs eutils
+
+DESCRIPTION="Network utility to retrieve files from the WWW"
+HOMEPAGE="https://www.gnu.org/software/wget/";
+SRC_URI="mirror://gnu/wget/${P}.tar.xz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 
~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x64-freebsd 
~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~arm-linux 
~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint 
~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="debug gnutls idn ipv6 libressl nls ntlm pcre +ssl static test uuid zlib"
+REQUIRED_USE=" ntlm? ( !gnutls ssl ) gnutls? ( ssl )"
+
+LIB_DEPEND="idn? ( net-dns/libidn[static-libs(+)] )
+       pcre? ( dev-libs/libpcre[static-libs(+)] )
+       ssl? (
+               gnutls? ( net-libs/gnutls:0=[static-libs(+)] )
+               !gnutls? (
+                       !libressl? ( dev-libs/openssl:0=[static-libs(+)] )
+                       libressl? ( dev-libs/libressl[static-libs(+)] )
+               )
+       )
+       uuid? ( sys-apps/util-linux[static-libs(+)] )
+       zlib? ( sys-libs/zlib[static-libs(+)] )"
+RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs(+)]} )"
+DEPEND="${RDEPEND}
+       app-arch/xz-utils
+       virtual/pkgconfig
+       static? ( ${LIB_DEPEND} )
+       test? (
+               ${PYTHON_DEPS}
+               dev-lang/perl
+               dev-perl/HTTP-Daemon
+               dev-perl/HTTP-Message
+               dev-perl/IO-Socket-SSL
+       )
+       nls? ( sys-devel/gettext )"
+
+DOCS=( AUTHORS MAILING-LIST NEWS README doc/sample.wgetrc )
+
+pkg_setup() {
+       use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+       epatch "${FILESDIR}"/${P}-progress-bar-segv.patch
+}
+
+src_configure() {
+       # fix compilation on Solaris, we need filio.h for FIONBIO as used in
+       # the included gnutls -- force ioctl.h to include this header
+       [[ ${CHOST} == *-solaris* ]] && append-cppflags -DBSD_COMP=1
+
+       if use static ; then
+               append-ldflags -static
+               tc-export PKG_CONFIG
+               PKG_CONFIG+=" --static"
+       fi
+       econf \
+               --disable-assert \
+               --disable-rpath \
+               $(use_with ssl ssl $(usex gnutls gnutls openssl)) \
+               $(use_enable ssl opie) \
+               $(use_enable ssl digest) \
+               $(use_enable idn iri) \
+               $(use_enable ipv6) \
+               $(use_enable nls) \
+               $(use_enable ntlm) \
+               $(use_enable pcre) \
+               $(use_enable debug) \
+               $(use_with uuid libuuid) \
+               $(use_with zlib)
+}
+
+src_test() {
+       emake check
+}
+
+src_install() {
+       default
+
+       sed -i \
+               -e "s:/usr/local/etc:${EPREFIX}/etc:g" \
+               "${ED}"/etc/wgetrc \
+               "${ED}"/usr/share/man/man1/wget.1 \
+               "${ED}"/usr/share/info/wget.info
+}

Reply via email to