summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMykyta Holubakha <hilobakho@gmail.com>2017-01-12 19:37:58 +0200
committerDavid Seifert <soap@gentoo.org>2017-01-15 14:37:53 +0100
commitda0797f7528c80c800a2c39fe5828aa0ac43fe7e (patch)
treee02c677c737d11c6dba3273e8fdcc2f66ab8950d /dev-libs/sway
parentmedia-plugins/kodi-pvr-vbox: bump to 4.0.2 (diff)
downloadgentoo-da0797f7528c80c800a2c39fe5828aa0ac43fe7e.tar.gz
gentoo-da0797f7528c80c800a2c39fe5828aa0ac43fe7e.tar.bz2
gentoo-da0797f7528c80c800a2c39fe5828aa0ac43fe7e.zip
dev-libs/sway: revbump to 0.11-r3
backport capability fixes (usptream #1043) drop capabilities from binary fix version info Closes: https://github.com/gentoo/gentoo/pull/3446
Diffstat (limited to 'dev-libs/sway')
-rw-r--r--dev-libs/sway/files/sway-0.11-r3-keep-cap.patch84
-rw-r--r--dev-libs/sway/sway-0.11-r3.ebuild (renamed from dev-libs/sway/sway-0.11-r2.ebuild)14
2 files changed, 94 insertions, 4 deletions
diff --git a/dev-libs/sway/files/sway-0.11-r3-keep-cap.patch b/dev-libs/sway/files/sway-0.11-r3-keep-cap.patch
new file mode 100644
index 000000000000..da821e365beb
--- /dev/null
+++ b/dev-libs/sway/files/sway-0.11-r3-keep-cap.patch
@@ -0,0 +1,84 @@
+From ea1313d80d5ee1623b00c8cdf6e7ff8a7e14c2ae Mon Sep 17 00:00:00 2001
+From: Mykyta Holubakha <hilobakho@gmail.com>
+Date: Thu, 12 Jan 2017 04:25:03 +0200
+Subject: [PATCH 1/2] Keep CAP_SYS_PTRACE with suid binary
+
+---
+ sway/main.c | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+diff --git a/sway/main.c b/sway/main.c
+index e8a02e7..6c74aab 100644
+--- a/sway/main.c
++++ b/sway/main.c
+@@ -10,6 +10,9 @@
+ #include <unistd.h>
+ #include <getopt.h>
+ #include <sys/capability.h>
++#ifdef __linux__
++#include <sys/prctl.h>
++#endif
+ #include "sway/extensions.h"
+ #include "sway/layout.h"
+ #include "sway/config.h"
+@@ -289,6 +292,18 @@ int main(int argc, char **argv) {
+ return 0;
+ }
+
++#ifdef __linux__
++ bool suid = false;
++ if (getuid() != geteuid() || getgid() != getegid()) {
++ // Retain capabilities after setuid()
++ if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0)) {
++ sway_log(L_ERROR, "Cannot keep caps after setuid()");
++ exit(EXIT_FAILURE);
++ }
++ suid = true;
++ }
++#endif
++
+ // we need to setup logging before wlc_init in case it fails.
+ if (debug) {
+ init_log(L_DEBUG);
+@@ -311,6 +326,19 @@ int main(int argc, char **argv) {
+ }
+ register_extensions();
+
++#ifdef __linux__
++ if (suid) {
++ // Drop every cap except CAP_SYS_PTRACE
++ cap_t caps = cap_init();
++ cap_value_t keep = CAP_SYS_PTRACE;
++ if (cap_set_flag(caps, CAP_PERMITTED, 1, &keep, CAP_SET) ||
++ cap_set_flag(caps, CAP_EFFECTIVE, 1, &keep, CAP_SET) ||
++ cap_set_proc(caps)) {
++ sway_log(L_ERROR, "Failed to drop extra capabilities");
++ exit(EXIT_FAILURE);
++ }
++ }
++#endif
+ // handle SIGTERM signals
+ signal(SIGTERM, sig_handler);
+
+
+From d9ba61d7e91c5aceef1a6a736dc65f0594b9be2a Mon Sep 17 00:00:00 2001
+From: Mykyta Holubakha <hilobakho@gmail.com>
+Date: Thu, 12 Jan 2017 04:35:09 +0200
+Subject: [PATCH 2/2] Log capability dropping
+
+---
+ sway/main.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sway/main.c b/sway/main.c
+index 6c74aab..7bf71b5 100644
+--- a/sway/main.c
++++ b/sway/main.c
+@@ -331,6 +331,7 @@ int main(int argc, char **argv) {
+ // Drop every cap except CAP_SYS_PTRACE
+ cap_t caps = cap_init();
+ cap_value_t keep = CAP_SYS_PTRACE;
++ sway_log(L_INFO, "Dropping extra capabilities");
+ if (cap_set_flag(caps, CAP_PERMITTED, 1, &keep, CAP_SET) ||
+ cap_set_flag(caps, CAP_EFFECTIVE, 1, &keep, CAP_SET) ||
+ cap_set_proc(caps)) {
diff --git a/dev-libs/sway/sway-0.11-r2.ebuild b/dev-libs/sway/sway-0.11-r3.ebuild
index dbea8b27f68b..fdd4febb9b1e 100644
--- a/dev-libs/sway/sway-0.11-r2.ebuild
+++ b/dev-libs/sway/sway-0.11-r3.ebuild
@@ -1,10 +1,10 @@
-# Copyright 1999-2016 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=6
-inherit eutils cmake-utils fcaps
+inherit eutils cmake-utils
DESCRIPTION="i3-compatible Wayland window manager"
HOMEPAGE="http://swaywm.org/"
@@ -32,6 +32,8 @@ DEPEND="${RDEPEND}
virtual/pkgconfig
app-text/asciidoc"
+PATCHES=( "${FILESDIR}/sway-0.11-r3-keep-cap.patch" )
+
src_prepare() {
cmake-utils_src_prepare
@@ -54,15 +56,19 @@ src_configure() {
-DCMAKE_INSTALL_SYSCONFDIR="/etc"
-DLD_LIBRARY_PATH="${EPREFIX}/usr/lib"
+ -DGIT_COMMIT_HASH="${PVR}" # specify version info, may change in future
)
cmake-utils_src_configure
}
-FILECAPS=( -M 4711 cap_sys_ptrace,cap_sys_tty_config usr/bin/sway )
+src_install() {
+ cmake-utils_src_install
+
+ use !systemd && fperms u+s /usr/bin/sway
+}
pkg_postinst() {
- fcaps_pkg_postinst
if use swaygrab
then
optfeature "swaygrab screenshot support" media-gfx/imagemagick[png]