From 63a4598a1ae65384bf49a869b292a90509d96633 Mon Sep 17 00:00:00 2001 From: Mike Gilbert Date: Sat, 3 Oct 2015 15:09:17 -0400 Subject: [PATCH] net-p2p/transmission: Fix segfault Bug: https://bugs.gentoo.org/534308 Package-Manager: portage-2.2.22_p5 --- .../files/2.84-node_alloc-segfault.patch | 55 +++++++++++++++++++ ...-r2.ebuild => transmission-2.84-r3.ebuild} | 1 + 2 files changed, 56 insertions(+) create mode 100644 net-p2p/transmission/files/2.84-node_alloc-segfault.patch rename net-p2p/transmission/{transmission-2.84-r2.ebuild => transmission-2.84-r3.ebuild} (98%) diff --git a/net-p2p/transmission/files/2.84-node_alloc-segfault.patch b/net-p2p/transmission/files/2.84-node_alloc-segfault.patch new file mode 100644 index 000000000000..717242879a75 --- /dev/null +++ b/net-p2p/transmission/files/2.84-node_alloc-segfault.patch @@ -0,0 +1,55 @@ +Index: libtransmission/list.c +=================================================================== +--- libtransmission/list.c (revision 14318) ++++ libtransmission/list.c (revision 14319) +@@ -30,20 +30,24 @@ + static tr_list* + node_alloc (void) + { +- tr_list * ret; ++ tr_list * ret = NULL; ++ tr_lock * lock = getRecycledNodesLock (); + +- if (recycled_nodes == NULL) ++ tr_lockLock (lock); ++ ++ if (recycled_nodes != NULL) + { +- ret = tr_new (tr_list, 1); +- } +- else +- { +- tr_lockLock (getRecycledNodesLock ()); + ret = recycled_nodes; + recycled_nodes = recycled_nodes->next; +- tr_lockUnlock (getRecycledNodesLock ()); + } + ++ tr_lockUnlock (lock); ++ ++ if (ret == NULL) ++ { ++ ret = tr_new (tr_list, 1); ++ } ++ + *ret = TR_LIST_CLEAR; + return ret; + } +@@ -51,13 +55,15 @@ + static void + node_free (tr_list* node) + { ++ tr_lock * lock = getRecycledNodesLock (); ++ + if (node != NULL) + { + *node = TR_LIST_CLEAR; +- tr_lockLock (getRecycledNodesLock ()); ++ tr_lockLock (lock); + node->next = recycled_nodes; + recycled_nodes = node; +- tr_lockUnlock (getRecycledNodesLock ()); ++ tr_lockUnlock (lock); + } + } + diff --git a/net-p2p/transmission/transmission-2.84-r2.ebuild b/net-p2p/transmission/transmission-2.84-r3.ebuild similarity index 98% rename from net-p2p/transmission/transmission-2.84-r2.ebuild rename to net-p2p/transmission/transmission-2.84-r3.ebuild index 09d42ad10077..d605c802e4e8 100644 --- a/net-p2p/transmission/transmission-2.84-r2.ebuild +++ b/net-p2p/transmission/transmission-2.84-r3.ebuild @@ -75,6 +75,7 @@ src_prepare() { epatch "${FILESDIR}/2.84-miniupnp14.patch" epatch "${FILESDIR}/2.84-libevent-2.1.5.patch" + epatch "${FILESDIR}/2.84-node_alloc-segfault.patch" epatch_user eautoreconf -- 2.26.2