summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2015-09-12 22:51:39 -0400
committerMike Frysinger <vapier@gentoo.org>2015-09-12 22:52:22 -0400
commitdc985c3cb2c8094313f60553c2a488f9bd39002d (patch)
treefc2d6b78cbfa7fae2077027ac2692463988bfb00
parentnet-misc/openssh: revert improper 4411ff42539dc7917a8db314327c6fbe699a616f (diff)
downloadgentoo-dc985c3c.tar.gz
gentoo-dc985c3c.tar.bz2
gentoo-dc985c3c.zip
net-p2p/ctorrent: workaround broken rTorrent files
-rw-r--r--net-p2p/ctorrent/ctorrent-3.3.2-r3.ebuild29
-rw-r--r--net-p2p/ctorrent/files/ctorrent-3.3.2-empty-path-components.patch38
2 files changed, 67 insertions, 0 deletions
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);