commit:     f0b342973656ced59955be083435b5f59736bae0
Author:     Sergey Popov <pinkbyte <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 10 15:31:24 2017 +0000
Commit:     Sergey Popov <pinkbyte <AT> gentoo <DOT> org>
CommitDate: Tue Jan 10 15:31:42 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f0b34297

net-p2p/transmission: revision bump

Backport upstream fix for handshaking.
Committed straight to stable

Package-Manager: portage-2.3.3
RepoMan-Options: --force

 .../files/transmission-2.92-handshake.patch        |  33 +++++
 net-p2p/transmission/transmission-2.92-r2.ebuild   | 165 +++++++++++++++++++++
 2 files changed, 198 insertions(+)

diff --git a/net-p2p/transmission/files/transmission-2.92-handshake.patch 
b/net-p2p/transmission/files/transmission-2.92-handshake.patch
new file mode 100644
index 00000000..a30cd58
--- /dev/null
+++ b/net-p2p/transmission/files/transmission-2.92-handshake.patch
@@ -0,0 +1,33 @@
+commit 4c00df9463ea4fd70b73c620e439f5c3ee5efa60
+Author: Mike Gelfand <[email protected]>
+Date:   Sun Sep 18 13:58:15 2016 +0300
+
+    Abort handshake if establishing DH shared secret fails
+    
+    Fixes #27
+
+diff --git a/libtransmission/handshake.c b/libtransmission/handshake.c
+index c728696..e7ff131 100644
+--- a/libtransmission/handshake.c
++++ b/libtransmission/handshake.c
+@@ -425,7 +425,8 @@ readYb (tr_handshake * handshake, struct evbuffer * inbuf)
+ 
+   /* compute the secret */
+   evbuffer_remove (inbuf, yb, KEY_LEN);
+-  tr_cryptoComputeSecret (handshake->crypto, yb);
++  if (!tr_cryptoComputeSecret (handshake->crypto, yb))
++    return tr_handshakeDone (handshake, false);
+ 
+   /* now send these: HASH ('req1', S), HASH ('req2', SKEY) xor HASH ('req3', 
S),
+    * ENCRYPT (VC, crypto_provide, len (PadC), PadC, len (IA)), ENCRYPT (IA) */
+@@ -741,7 +742,9 @@ readYa (tr_handshake    * handshake,
+ 
+   /* read the incoming peer's public key */
+   evbuffer_remove (inbuf, ya, KEY_LEN);
+-  tr_cryptoComputeSecret (handshake->crypto, ya);
++  if (!tr_cryptoComputeSecret (handshake->crypto, ya))
++    return tr_handshakeDone (handshake, false);
++
+   computeRequestHash (handshake, "req1", handshake->myReq1);
+ 
+   /* send our public key to the peer */

diff --git a/net-p2p/transmission/transmission-2.92-r2.ebuild 
b/net-p2p/transmission/transmission-2.92-r2.ebuild
new file mode 100644
index 00000000..4dc6af0
--- /dev/null
+++ b/net-p2p/transmission/transmission-2.92-r2.ebuild
@@ -0,0 +1,165 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+inherit autotools fdo-mime flag-o-matic gnome2-utils qmake-utils systemd user
+
+DESCRIPTION="A Fast, Easy and Free BitTorrent client"
+HOMEPAGE="http://www.transmissionbt.com/";
+SRC_URI="http://download.transmissionbt.com/${PN}/files/${P}.tar.xz";
+
+# web/LICENSE is always GPL-2 whereas COPYING allows either GPL-2 or GPL-3 for 
the rest
+# transmission in licenses/ is for mentioning OpenSSL linking exception
+# MIT is in several libtransmission/ headers
+LICENSE="|| ( GPL-2 GPL-3 Transmission-OpenSSL-exception ) GPL-2 MIT"
+SLOT=0
+IUSE="ayatana gtk libressl lightweight systemd qt5 xfs"
+KEYWORDS="amd64 ~arm ~mips ppc ppc64 x86 ~x86-fbsd ~amd64-linux"
+
+RDEPEND=">=dev-libs/libevent-2.0.10:=
+       !libressl? ( dev-libs/openssl:0= )
+       libressl? ( dev-libs/libressl:0= )
+       net-libs/libnatpmp
+       >=net-libs/miniupnpc-1.7:=
+       >=net-misc/curl-7.16.3[ssl]
+       sys-libs/zlib:=
+       gtk? (
+               >=dev-libs/dbus-glib-0.100
+               >=dev-libs/glib-2.32:2
+               >=x11-libs/gtk+-3.4:3
+               ayatana? ( >=dev-libs/libappindicator-0.4.90:3 )
+               )
+       qt5? (
+               dev-qt/qtcore:5
+               dev-qt/qtdbus:5
+               dev-qt/qtgui:5
+               dev-qt/qtnetwork:5
+               dev-qt/qtwidgets:5
+               )
+       systemd? ( >=sys-apps/systemd-209:= )"
+DEPEND="${RDEPEND}
+       >=dev-libs/glib-2.32
+       dev-util/intltool
+       sys-devel/gettext
+       virtual/os-headers
+       virtual/pkgconfig
+       qt5? ( dev-qt/linguist-tools:5 )
+       xfs? ( sys-fs/xfsprogs )"
+
+REQUIRED_USE="ayatana? ( gtk )"
+
+DOCS=( AUTHORS NEWS qt/README.txt )
+
+PATCHES=(
+       "${FILESDIR}"/libsystemd.patch
+       "${FILESDIR}/${P}-handshake.patch"
+)
+
+src_prepare() {
+       sed -i -e '/CFLAGS/s:-ggdb3::' configure.ac || die
+
+       # Trick to avoid automagic dependency
+       if ! use ayatana ; then
+               sed -i -e '/^LIBAPPINDICATOR_MINIMUM/s:=.*:=9999:' configure.ac 
|| die
+       fi
+
+       # http://trac.transmissionbt.com/ticket/4324
+       sed -i -e 's|noinst\(_PROGRAMS = $(TESTS)\)|check\1|' 
libtransmission/Makefile.am || die
+
+       # Prevent m4_copy error when running aclocal
+       # m4_copy: won't overwrite defined macro: glib_DEFUN
+       rm m4/glib-gettext.m4 || die
+
+       default
+       eautoreconf
+}
+
+src_configure() {
+       export ac_cv_header_xfs_xfs_h=$(usex xfs)
+
+       # https://bugs.gentoo.org/577528
+       append-lfs-flags
+
+       econf \
+               --enable-external-natpmp \
+               $(use_enable lightweight) \
+               $(use_with systemd systemd-daemon) \
+               $(use_with gtk)
+
+       if use qt5; then
+               pushd qt >/dev/null || die
+               eqmake5 qtr.pro
+               popd >/dev/null || die
+       fi
+}
+
+src_compile() {
+       emake
+
+       if use qt5; then
+               emake -C qt
+               $(qt5_get_bindir)/lrelease qt/translations/*.ts || die
+       fi
+}
+
+src_install() {
+       default
+
+       rm "${ED%/}"/usr/share/transmission/web/LICENSE || die
+
+       newinitd "${FILESDIR}"/transmission-daemon.initd.10 transmission-daemon
+       newconfd "${FILESDIR}"/transmission-daemon.confd.4 transmission-daemon
+       systemd_dounit daemon/transmission-daemon.service
+       systemd_install_serviced "${FILESDIR}"/transmission-daemon.service.conf
+
+       if use qt5; then
+               pushd qt >/dev/null || die
+               emake INSTALL_ROOT="${ED%/}"/usr install
+
+               domenu transmission-qt.desktop
+
+               local res
+               for res in 16 22 24 32 48 64 72 96 128 192 256; do
+                       doicon -s ${res} 
icons/hicolor/${res}x${res}/transmission-qt.png
+               done
+               doicon -s scalable icons/hicolor/scalable/transmission-qt.svg
+
+               insinto /usr/share/qt5/translations
+               doins translations/*.qm
+               popd >/dev/null || die
+       fi
+}
+
+pkg_preinst() {
+       gnome2_icon_savelist
+}
+
+pkg_postinst() {
+       fdo-mime_desktop_database_update
+       gnome2_icon_cache_update
+
+       enewgroup transmission
+       enewuser transmission -1 -1 /var/lib/transmission transmission
+
+       if [[ ! -e "${EROOT%/}"/var/lib/transmission ]]; then
+               mkdir -p "${EROOT%/}"/var/lib/transmission || die
+               chown transmission:transmission 
"${EROOT%/}"/var/lib/transmission || die
+       fi
+
+       elog "If you use transmission-daemon, please, set 'rpc-username' and"
+       elog "'rpc-password' (in plain text, transmission-daemon will hash it 
on"
+       elog "start) in settings.json file located at 
/var/lib/transmission/config or"
+       elog "any other appropriate config directory."
+       elog
+       elog "Since µTP is enabled by default, transmission needs large kernel 
buffers for"
+       elog "the UDP socket. You can append following lines into 
/etc/sysctl.conf:"
+       elog " net.core.rmem_max = 4194304"
+       elog " net.core.wmem_max = 1048576"
+       elog "and run sysctl -p"
+}
+
+pkg_postrm() {
+       fdo-mime_desktop_database_update
+       gnome2_icon_cache_update
+}

Reply via email to