summaryrefslogtreecommitdiff
path: root/net-news/newsbeuter
diff options
context:
space:
mode:
Diffstat (limited to 'net-news/newsbeuter')
-rw-r--r--net-news/newsbeuter/Manifest10
-rw-r--r--net-news/newsbeuter/files/newsbeuter-2.9-fix-mem-leak.patch88
-rw-r--r--net-news/newsbeuter/files/newsbeuter-2.9-fix-segfault.patch57
-rw-r--r--net-news/newsbeuter/files/newsbeuter-2.9-ncurses6.patch11
-rw-r--r--net-news/newsbeuter/files/newsbeuter-2.9-security-fix.patch20
-rw-r--r--net-news/newsbeuter/metadata.xml12
-rw-r--r--net-news/newsbeuter/newsbeuter-2.9-r3.ebuild76
-rw-r--r--net-news/newsbeuter/newsbeuter-9999.ebuild69
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
+}