From dc985c3cb2c8094313f60553c2a488f9bd39002d Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 12 Sep 2015 22:51:39 -0400 Subject: net-p2p/ctorrent: workaround broken rTorrent files --- net-p2p/ctorrent/ctorrent-3.3.2-r3.ebuild | 29 +++++++++++++++++ .../ctorrent-3.3.2-empty-path-components.patch | 38 ++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 net-p2p/ctorrent/ctorrent-3.3.2-r3.ebuild create mode 100644 net-p2p/ctorrent/files/ctorrent-3.3.2-empty-path-components.patch (limited to 'net-p2p/ctorrent') diff --git a/net-p2p/ctorrent/ctorrent-3.3.2-r3.ebuild b/net-p2p/ctorrent/ctorrent-3.3.2-r3.ebuild new file mode 100644 index 000000000000..d667683b3923 --- /dev/null +++ b/net-p2p/ctorrent/ctorrent-3.3.2-r3.ebuild @@ -0,0 +1,29 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +inherit eutils + +MY_P="${PN}-dnh${PV}" + +DESCRIPTION="Enhanced CTorrent is a BitTorrent console client written in C and C++" +HOMEPAGE="http://www.rahul.net/dholmes/ctorrent/" +SRC_URI="mirror://sourceforge/dtorrent/${MY_P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~ppc ~s390 ~sh ~sparc ~x86 ~x86-fbsd" +IUSE="" + +S=${WORKDIR}/${MY_P} + +DEPEND="dev-libs/openssl:=" +RDEPEND="${DEPEND}" + +src_prepare() { + epatch "${FILESDIR}"/${PN}-CVE-2009-1759.patch + epatch "${FILESDIR}"/${P}-negative-ints.patch + epatch "${FILESDIR}"/${P}-empty-path-components.patch +} diff --git a/net-p2p/ctorrent/files/ctorrent-3.3.2-empty-path-components.patch b/net-p2p/ctorrent/files/ctorrent-3.3.2-empty-path-components.patch new file mode 100644 index 000000000000..fce41d4feff5 --- /dev/null +++ b/net-p2p/ctorrent/files/ctorrent-3.3.2-empty-path-components.patch @@ -0,0 +1,38 @@ +rTorrent sometimes creates invalid torrents which has empty path components. +the bitorrent spec allows for "" strings, but they make no sense in paths. +so instead of always adding a / in between, skip them. ugh. + +for example: +dict { + 'info' => dict { + 'name' => str = "some dir" (len = 8) + 'files' => list [ + dict { + 'length' => int = 12345567 + 'path' => list [ + str = "" (len = 0) + str = "foo.bin" (len = 7) + ] + } + ... + ] + ... + } + ... +} + +ctorrent will then try to fetch the file "/some dir/foo.bin" instead of +"some dir/foo.bin" (relative to $PWD). + +--- a/bencode.cpp ++++ b/bencode.cpp +@@ -258,7 +258,8 @@ + n -= r; + if( 'e' == *pb ) break; + if( pathname >= endmax ) return 0; +- *pathname++ = PATH_SP; ++ if (q) ++ *pathname++ = PATH_SP; + } + *pathname = '\0'; + return (pb - b + 1); -- cgit v1.2.3-65-gdbad