diff options
Diffstat (limited to 'net-news/newsbeuter')
-rw-r--r-- | net-news/newsbeuter/Manifest | 10 | ||||
-rw-r--r-- | net-news/newsbeuter/files/newsbeuter-2.9-fix-mem-leak.patch | 88 | ||||
-rw-r--r-- | net-news/newsbeuter/files/newsbeuter-2.9-fix-segfault.patch | 57 | ||||
-rw-r--r-- | net-news/newsbeuter/files/newsbeuter-2.9-ncurses6.patch | 11 | ||||
-rw-r--r-- | net-news/newsbeuter/files/newsbeuter-2.9-security-fix.patch | 20 | ||||
-rw-r--r-- | net-news/newsbeuter/metadata.xml | 12 | ||||
-rw-r--r-- | net-news/newsbeuter/newsbeuter-2.9-r3.ebuild | 76 | ||||
-rw-r--r-- | net-news/newsbeuter/newsbeuter-9999.ebuild | 69 |
8 files changed, 343 insertions, 0 deletions
diff --git a/net-news/newsbeuter/Manifest b/net-news/newsbeuter/Manifest new file mode 100644 index 000000000000..64a16083f622 --- /dev/null +++ b/net-news/newsbeuter/Manifest @@ -0,0 +1,10 @@ +AUX newsbeuter-2.9-fix-mem-leak.patch 2665 SHA256 f8c88422679c7af94acc312f2e57cdc5646524582c4d6801fbe94f2d51338b0d SHA512 4cd01a0f1f4c4998db30e95a7e099f008de9bd7d66ac70870d924b36eef9fb5bbd61ea96aad4d03a0736ad37e1013970883df36d440541ce9d9120e98f59dfe2 WHIRLPOOL 93daf652137e39857d326fbc20b12a401abc02b61da8b1ea368f7e9fb6cc9ab0fd308c9169a35ef7df74ab294c38d5862841084ee450b2f96054cae25a4b8574 +AUX newsbeuter-2.9-fix-segfault.patch 1507 SHA256 5c9c9f4f45a1d2eedab746192f0acee111c6821a051b32e3f420ab2b8167de4c SHA512 4dfdc3d08a786b04b55fabccaa9047f99d5151eed7edbe492195470c2d8cfbc3acec2925fb32c75f095a7f32f0b895adcb9bb1741ced27f9d65aa9497d2d867d WHIRLPOOL 4a47a1ab0bd30be1133d2a0e100532e0d447fb7b198372c8f2b627d7c4940cd71e9df15dea09c6d34a52d8d3224a738bb8689922388253802eb6c0c1353af7d8 +AUX newsbeuter-2.9-ncurses6.patch 361 SHA256 2e4723a48ef37ffef9db10018eebeb1fe82e4b22f81333cff963bbf9e4cc452d SHA512 27fb5f73df13508f8ae2a6192872f703263e1962c1623ed9fc3e706d5904d76bb99623034db447c4527075c5371aceed27f1c83144307b8b19e9ab3d10f8057d WHIRLPOOL 624b040e65b6cb2811578e16e1c87ee4b8f91116c05224e8be4b15ae32d8e554216a41eae124bbd50445b80320506ea0729745fbca6dfa1b5d4d95c3e4141cc8 +AUX newsbeuter-2.9-security-fix.patch 1203 SHA256 6a6e9a0c7d7203f24a768eddc2c65ebc3ef5d95095185dd22c3d77a81596207a SHA512 9b9b48e7ba9ef4c673f3fc61baf6ea5eb1750e9a63aba3cc07632f5117e1b28af58407706675516f70d4a67666c358d800944c89ecbf78e8b6477ad921c4982d WHIRLPOOL fb035d08cdf3021b278451d87d7cc98949f8300707eff4ee6cc4a42ead39063b146ac4eb6de00cad3addc19f6e8cdcadf8ef4b7f722e87d8a6fab734b177cdee +DIST newsbeuter-2.9.tar.gz 432763 SHA256 74a8bf019b09c3b270ba95adc29f2bbe48ea1f55cc0634276b21fcce1f043dc8 SHA512 b173008c8c8d3729f8ccef3ce62645a05c1803fb842d5c0afdf9ffd4ed3726030f9c359c20bc817402a6a0ea12af742d0ae7faf9b92d52c11f420f62b430b0aa WHIRLPOOL d975cedeb7a113cd369b676f390f31513120a1e5b0f5bd0b34f1db1a49750a38a6c71a9b868a0e9fd078e76f45c4900771f898064106c12056820172c623548c +EBUILD newsbeuter-2.9-r3.ebuild 1523 SHA256 5d376d120b56281b6701779826b41017efe36bb457563f4001204af8f5235f51 SHA512 219f0578cde2bceec932af20e4e39f6972f71fbca35dabe54131bc0273d9d7e2babf11441fb2dae3dd69a178e197713eaf5737005c618fac162d11862db94987 WHIRLPOOL d9d909f9b8f9031703650b669c3d82a0cffb3623066dc8b2bde17f255043c9d0229f4321cc9642ce9df6fbd6d1682902c97083664969a143696ae7c474fb4670 +EBUILD newsbeuter-9999.ebuild 1348 SHA256 cd979b6a800e20a0cbe13d6e8eb2c2fa34cbebea6a0da21d3aa78b8c0e216cbb SHA512 86eb0d12f702250a57b2a700dfa2c40b9c623d834b4a84fa1af7e96a0f50a6b8dc61389d7d4cde5ef522e0d5dc35f02849866d31265ad3933a7ca824587eda0d WHIRLPOOL 4c24b21627401e8621503f6ef22d9d385bae3c3c253bc7107377e7fa0acc4e16d0c9d0601d5d359ef3bbabbb7bc65b6c6ffd4241ca4fc52a4bb09c685e98417f +MISC ChangeLog 3221 SHA256 26a43e44131ef98e1efba1fafc3d9b6dacec03a6f57321c34baf06177e00ab45 SHA512 2be1b7f65e3f6adb49839f48602d69b0dd18926b5e87faafdb3ad8605257c6ed1e678dd73741654e1b32fa93c21dcba998acfea1844943f3d21b2af5eed047cb WHIRLPOOL efc8de5e3d903b34ee575ef83efd5f5af3cea59dd0458e4931e42ea42da7847ae434816e4e6f954afaeb25fdd72a435c6d68c6ae6204fb21e85e496f20442ac2 +MISC ChangeLog-2015 8212 SHA256 9450ecf027d1f380d3dd6d74dd4feca5d40498da8d46dd89419443ab2ac19442 SHA512 f9de9a8c2ef377d67bb3c6b9cad5c0669448ee1f7396b604a6c327ae2ae098cfadfe7205f2e390c9cddfd680c5c353288738136c03ecb9c8d57c4f57c4da90fd WHIRLPOOL 49ac6b6aef6e9eb939dbf97f31c13459b93e8885c062c82ef25a2f29b1c6a0a8159ab68b85e16b2c00aa884edf7cda412f1c080f923750ec0474fc3101a8f991 +MISC metadata.xml 419 SHA256 8e7a6a1f34eba23d7cf4bfe17de7d555ffa62fedc38779a7ccc160082b4c8057 SHA512 9dc097fe23fdc18591c9f796caf4f9855ad2a2c779e2253806fd78edcfabc613fa0cc018a88b64c9d137b9cc4056f952fedc4a67ee62314190a099fd6a124c21 WHIRLPOOL 6048bd54ea392036bcf9c846bd5f9d17bb36b0d77adcb5e6b4975e5cde1b668c32e63771ad64ccdb94b3414cfebd49d2767ab1e0f994a30bf52983b7ed815748 diff --git a/net-news/newsbeuter/files/newsbeuter-2.9-fix-mem-leak.patch b/net-news/newsbeuter/files/newsbeuter-2.9-fix-mem-leak.patch new file mode 100644 index 000000000000..214d8ed9fba1 --- /dev/null +++ b/net-news/newsbeuter/files/newsbeuter-2.9-fix-mem-leak.patch @@ -0,0 +1,88 @@ +From cdacfbde9fe3ae2489fc96d35dfb7d263ab03f50 Mon Sep 17 00:00:00 2001 +From: cpubug <admin@crtx.ru> +Date: Sun, 8 Nov 2015 13:15:25 +0300 +Subject: [PATCH] fixed a memory leak + +--- + include/rss.h | 4 ++-- + src/rss.cpp | 7 +++++-- + 2 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/include/rss.h b/include/rss.h +index bc0ef03..f8c87f2 100644 +--- a/include/rss.h ++++ b/include/rss.h +@@ -117,7 +117,7 @@ class rss_item : public matchable { + + void set_feedptr(std::shared_ptr<rss_feed> ptr); + inline std::shared_ptr<rss_feed> get_feedptr() { +- return feedptr; ++ return feedptr_.lock(); + } + + inline bool deleted() const { +@@ -167,7 +167,7 @@ class rss_item : public matchable { + bool enqueued_; + std::string flags_; + std::string oldflags_; +- std::shared_ptr<rss_feed> feedptr; ++ std::weak_ptr<rss_feed> feedptr_; + bool deleted_; + unsigned int idx; + std::string base; +diff --git a/src/rss.cpp b/src/rss.cpp +index 1687cbe..9cf0cce 100644 +--- a/src/rss.cpp ++++ b/src/rss.cpp +@@ -27,7 +27,6 @@ rss_item::rss_item(cache * c) : pubDate_(0), unread_(true), ch(c), enqueued_(fal + } + + rss_item::~rss_item() { +- feedptr.reset(); + // LOG(LOG_CRITICAL, "delete rss_item"); + } + +@@ -91,6 +90,7 @@ void rss_item::set_unread_nowrite(bool u) { + + void rss_item::set_unread_nowrite_notify(bool u, bool notify) { + unread_ = u; ++ std::shared_ptr<rss_feed> feedptr = feedptr_.lock(); + if (feedptr && notify) { + feedptr->get_item_by_guid(guid_)->set_unread_nowrite(unread_); // notify parent feed + } +@@ -100,6 +100,7 @@ void rss_item::set_unread(bool u) { + if (unread_ != u) { + bool old_u = unread_; + unread_ = u; ++ std::shared_ptr<rss_feed> feedptr = feedptr_.lock(); + if (feedptr) + feedptr->get_item_by_guid(guid_)->set_unread_nowrite(unread_); // notify parent feed + try { +@@ -243,6 +244,7 @@ bool rss_item::has_attribute(const std::string& attribname) { + return true; + + // if we have a feed, then forward the request ++ std::shared_ptr<rss_feed> feedptr = feedptr_.lock(); + if (feedptr) + return feedptr->rss_feed::has_attribute(attribname); + +@@ -276,6 +278,7 @@ std::string rss_item::get_attribute(const std::string& attribname) { + return utils::to_string<unsigned int>(idx); + + // if we have a feed, then forward the request ++ std::shared_ptr<rss_feed> feedptr = feedptr_.lock(); + if (feedptr) + return feedptr->rss_feed::get_attribute(attribname); + +@@ -563,7 +566,7 @@ void rss_feed::set_feedptrs(std::shared_ptr<rss_feed> self) { + } + + void rss_item::set_feedptr(std::shared_ptr<rss_feed> ptr) { +- feedptr = ptr; ++ feedptr_ = std::weak_ptr<rss_feed>(ptr); + } + + std::string rss_feed::get_status() { +-- +2.9.3 + diff --git a/net-news/newsbeuter/files/newsbeuter-2.9-fix-segfault.patch b/net-news/newsbeuter/files/newsbeuter-2.9-fix-segfault.patch new file mode 100644 index 000000000000..aa6d1b2a817d --- /dev/null +++ b/net-news/newsbeuter/files/newsbeuter-2.9-fix-segfault.patch @@ -0,0 +1,57 @@ +diff --git a/include/poddlthread.h b/include/poddlthread.h +index a10b9e7..cf0f1da 100644 +--- a/include/poddlthread.h ++++ b/include/poddlthread.h +@@ -7,6 +7,7 @@ + + #include <sys/time.h> + #include <time.h> ++#include <memory> + + #include <configcontainer.h> + +@@ -24,7 +25,7 @@ class poddlthread { + private: + void mkdir_p(const char * file); + download * dl; +- std::ofstream *f; ++ std::shared_ptr<std::ofstream> f; + timeval tv1; + timeval tv2; + size_t bytecount; +diff --git a/src/pb_controller.cpp b/src/pb_controller.cpp +index 09b5e89..da8ffcb 100644 +--- a/src/pb_controller.cpp ++++ b/src/pb_controller.cpp +@@ -287,6 +287,7 @@ void pb_controller::start_downloads() { + if (it->status() == DL_QUEUED) { + std::thread t {poddlthread(&(*it), cfg)}; + --dl2start; ++ t.detach(); + } + } + } +diff --git a/src/pb_view.cpp b/src/pb_view.cpp +index fb61c72..f3cb478 100644 +--- a/src/pb_view.cpp ++++ b/src/pb_view.cpp +@@ -111,6 +111,7 @@ void pb_view::run(bool auto_download) { + if (idx != -1) { + if (ctrl->downloads()[idx].status() != DL_DOWNLOADING) { + std::thread t {poddlthread(&ctrl->downloads()[idx], ctrl->get_cfgcont())}; ++ t.detach(); + } + } + } +diff --git a/src/poddlthread.cpp b/src/poddlthread.cpp +index 583481e..3a1b390 100644 +--- a/src/poddlthread.cpp ++++ b/src/poddlthread.cpp +@@ -22,7 +22,6 @@ poddlthread::poddlthread(download * dl_, newsbeuter::configcontainer * c) : dl(d + } + + poddlthread::~poddlthread() { +- delete f; + } + + void poddlthread::operator()() { diff --git a/net-news/newsbeuter/files/newsbeuter-2.9-ncurses6.patch b/net-news/newsbeuter/files/newsbeuter-2.9-ncurses6.patch new file mode 100644 index 000000000000..f645d7c53fcb --- /dev/null +++ b/net-news/newsbeuter/files/newsbeuter-2.9-ncurses6.patch @@ -0,0 +1,11 @@ +--- a/config.sh ++++ b/config.sh +@@ -110,7 +110,7 @@ + if [ `uname -s` = "Darwin" ]; then + check_custom "ncurses5.4" "ncurses5.4-config" || fail "ncurses5.4" + elif [ `uname -s` != "OpenBSD" ]; then +- check_custom "ncursesw5" "ncursesw5-config" || fail "ncursesw" ++ check_pkg "ncursesw" || fail "ncursesw" + fi + check_ssl_implementation + all_aboard_the_fail_boat diff --git a/net-news/newsbeuter/files/newsbeuter-2.9-security-fix.patch b/net-news/newsbeuter/files/newsbeuter-2.9-security-fix.patch new file mode 100644 index 000000000000..5e7b39a5f20f --- /dev/null +++ b/net-news/newsbeuter/files/newsbeuter-2.9-security-fix.patch @@ -0,0 +1,20 @@ +Newsbeuter didn't properly shell-escape the arguments passed to bookmarking +command, which allows a remote attacker to perform remote code execution by +crafting an RSS item whose title and/or URL contain something interpretable by +the shell (most notably subshell invocations.) + +--- a/src/controller.cpp ++++ b/src/controller.cpp +@@ -1275,9 +1275,10 @@ std::string controller::bookmark(const std::string& url, const std::string& titl + std::string bookmark_cmd = cfg.get_configvalue("bookmark-cmd"); + bool is_interactive = cfg.get_configvalue_as_bool("bookmark-interactive"); + if (bookmark_cmd.length() > 0) { +- std::string cmdline = utils::strprintf("%s '%s' %s %s", ++ std::string cmdline = utils::strprintf("%s '%s' '%s' '%s'", + bookmark_cmd.c_str(), utils::replace_all(url,"'", "%27").c_str(), +- stfl::quote(title).c_str(), stfl::quote(description).c_str()); ++ utils::replace_all(title,"'", "%27").c_str(), ++ utils::replace_all(description,"'", "%27").c_str()); + + LOG(LOG_DEBUG, "controller::bookmark: cmd = %s", cmdline.c_str()); + diff --git a/net-news/newsbeuter/metadata.xml b/net-news/newsbeuter/metadata.xml new file mode 100644 index 000000000000..8a4fa59c9afd --- /dev/null +++ b/net-news/newsbeuter/metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>radhermit@gentoo.org</email> + <name>Tim Harder</name> + </maintainer> + <longdescription lang="en"> + newsbeuter is an RSS feed reader for the text console. It is designed + to run Unix-like operating systems such as Linux. + </longdescription> +</pkgmetadata> diff --git a/net-news/newsbeuter/newsbeuter-2.9-r3.ebuild b/net-news/newsbeuter/newsbeuter-2.9-r3.ebuild new file mode 100644 index 000000000000..85de96fbfdf1 --- /dev/null +++ b/net-news/newsbeuter/newsbeuter-2.9-r3.ebuild @@ -0,0 +1,76 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/akrennmair/newsbeuter.git" +else + KEYWORDS="amd64 ~ppc x86" + SRC_URI="http://www.newsbeuter.org/downloads/${P}.tar.gz" +fi + +inherit toolchain-funcs + +DESCRIPTION="A RSS/Atom feed reader for the text console" +HOMEPAGE="http://www.newsbeuter.org/index.html" + +LICENSE="MIT" +SLOT="0" +IUSE="test" + +RDEPEND=" + >=dev-db/sqlite-3.5:3 + >=dev-libs/stfl-0.21 + >=net-misc/curl-7.18.0 + >=dev-libs/json-c-0.11:= + dev-libs/libxml2 + sys-libs/ncurses:0=[unicode] +" +DEPEND="${RDEPEND} + dev-lang/perl + virtual/pkgconfig + sys-devel/gettext + test? ( + dev-libs/boost + sys-devel/bc + ) +" +[[ ${PV} == 9999 ]] && DEPEND+=" app-text/asciidoc" + +# tests require network access +RESTRICT="test" + +PATCHES=( + "${FILESDIR}"/${PN}-2.9-ncurses6.patch + "${FILESDIR}"/${PN}-2.9-fix-mem-leak.patch + "${FILESDIR}"/${PN}-2.9-fix-segfault.patch + "${FILESDIR}"/${PN}-2.9-security-fix.patch +) + +src_prepare() { + default + sed -i 's:-ggdb::' Makefile || die +} + +src_configure() { + ./config.sh || die +} + +src_compile() { + emake prefix="/usr" CXX="$(tc-getCXX)" AR="$(tc-getAR)" RANLIB="$(tc-getRANLIB)" + [[ ${PV} == 9999 ]] && emake doc +} + +src_test() { + emake test + # Tests fail if in ${S} rather than in ${S}/test + cd "${S}"/test || die + ./test || die +} + +src_install() { + emake DESTDIR="${D}" prefix="/usr" docdir="/usr/share/doc/${PF}" install + dodoc AUTHORS README CHANGES +} diff --git a/net-news/newsbeuter/newsbeuter-9999.ebuild b/net-news/newsbeuter/newsbeuter-9999.ebuild new file mode 100644 index 000000000000..90c3b59ea882 --- /dev/null +++ b/net-news/newsbeuter/newsbeuter-9999.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/akrennmair/newsbeuter.git" +else + KEYWORDS="~amd64 ~ppc ~x86" + SRC_URI="http://www.newsbeuter.org/downloads/${P}.tar.gz" +fi + +inherit toolchain-funcs + +DESCRIPTION="A RSS/Atom feed reader for the text console" +HOMEPAGE="http://www.newsbeuter.org/index.html" + +LICENSE="MIT" +SLOT="0" +IUSE="test" + +RDEPEND=" + >=dev-db/sqlite-3.5:3 + >=dev-libs/stfl-0.21 + >=net-misc/curl-7.18.0 + >=dev-libs/json-c-0.11:= + dev-libs/libxml2 + sys-libs/ncurses:0=[unicode] +" +DEPEND="${RDEPEND} + dev-lang/perl + virtual/pkgconfig + sys-devel/gettext + test? ( + dev-libs/boost + sys-devel/bc + ) +" +[[ ${PV} == 9999 ]] && DEPEND+=" app-text/asciidoc" + +# tests require network access +RESTRICT="test" + +src_prepare() { + default + sed -i 's:-ggdb::' Makefile || die +} + +src_configure() { + ./config.sh || die +} + +src_compile() { + emake prefix="/usr" CXX="$(tc-getCXX)" AR="$(tc-getAR)" RANLIB="$(tc-getRANLIB)" + [[ ${PV} == 9999 ]] && emake doc +} + +src_test() { + emake test + # Tests fail if in ${S} rather than in ${S}/test + cd "${S}"/test || die + ./test || die +} + +src_install() { + emake DESTDIR="${D}" prefix="/usr" docdir="/usr/share/doc/${PF}" install + dodoc AUTHORS CHANGES README.md TODO +} |