diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2017-06-17 20:09:01 +0200 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2017-06-17 20:29:57 +0200 |
commit | 78f86a70ce899cd549825f5125df1d86ebc00381 (patch) | |
tree | 3b877f7529fd26a8ce5dfa71c6d2b13e77293c34 /kde-plasma | |
parent | dev-lang/spidermonkey: x86 stable wrt bug #619774 (diff) | |
download | gentoo-78f86a70ce899cd549825f5125df1d86ebc00381.tar.gz gentoo-78f86a70ce899cd549825f5125df1d86ebc00381.tar.bz2 gentoo-78f86a70ce899cd549825f5125df1d86ebc00381.zip |
kde-plasma/plasma-workspace: Fix xembedsniproxy memleak/crash
Package-Manager: Portage-2.3.5, Repoman-2.3.1
Diffstat (limited to 'kde-plasma')
-rw-r--r-- | kde-plasma/plasma-workspace/files/plasma-workspace-5.10.2-xembedsniproxy.patch | 32 | ||||
-rw-r--r-- | kde-plasma/plasma-workspace/plasma-workspace-5.10.2-r1.ebuild | 166 |
2 files changed, 198 insertions, 0 deletions
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.10.2-xembedsniproxy.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.10.2-xembedsniproxy.patch new file mode 100644 index 000000000000..7e47893dc6b8 --- /dev/null +++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.10.2-xembedsniproxy.patch @@ -0,0 +1,32 @@ +From a17de5957d4ba0f07c77fa99860c9046ff8aa1be Mon Sep 17 00:00:00 2001 +From: Wolfgang Bauer <wbauer@tmo.at> +Date: Sat, 17 Jun 2017 19:19:40 +0200 +Subject: [xembedsniproxy] Fix memleak and possible crash + +Check the return value of xcb_get_window_attributes_reply() to prevent a crash if getting the window attributes would fail for some reason. + +Also free the returned structure after usage to avoid memleaks. +This is necessary according to https://xcb.freedesktop.org/windowcontextandmanipulation (see the end of the page). + +Differential Revision: https://phabricator.kde.org/D6252 +--- + xembed-sni-proxy/sniproxy.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/xembed-sni-proxy/sniproxy.cpp b/xembed-sni-proxy/sniproxy.cpp +index 5974baf..b2f64fb 100644 +--- a/xembed-sni-proxy/sniproxy.cpp ++++ b/xembed-sni-proxy/sniproxy.cpp +@@ -209,8 +209,9 @@ SNIProxy::SNIProxy(xcb_window_t wid, QObject* parent): + //if the client does supports that we send directly, otherwise we'll use xtest + auto waCookie = xcb_get_window_attributes(c, wid); + auto windowAttributes = xcb_get_window_attributes_reply(c, waCookie, nullptr); +- if (! (windowAttributes->all_event_masks & XCB_EVENT_MASK_BUTTON_PRESS)) { ++ if (windowAttributes && ! (windowAttributes->all_event_masks & XCB_EVENT_MASK_BUTTON_PRESS)) { + m_injectMode = XTest; ++ free(windowAttributes); + } + + //there's no damage event for the first paint, and sometimes it's not drawn immediately +-- +cgit v0.11.2 diff --git a/kde-plasma/plasma-workspace/plasma-workspace-5.10.2-r1.ebuild b/kde-plasma/plasma-workspace/plasma-workspace-5.10.2-r1.ebuild new file mode 100644 index 000000000000..81958ff0e7fb --- /dev/null +++ b/kde-plasma/plasma-workspace/plasma-workspace-5.10.2-r1.ebuild @@ -0,0 +1,166 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +KDE_HANDBOOK="forceoptional" +KDE_TEST="forceoptional" +VIRTUALX_REQUIRED="test" +inherit kde5 qmake-utils + +DESCRIPTION="KDE Plasma workspace" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="+calendar geolocation gps prison qalculate +semantic-desktop" + +COMMON_DEPEND=" + $(add_frameworks_dep kactivities) + $(add_frameworks_dep kauth) + $(add_frameworks_dep kbookmarks) + $(add_frameworks_dep kcmutils) + $(add_frameworks_dep kcompletion) + $(add_frameworks_dep kconfig) + $(add_frameworks_dep kconfigwidgets) + $(add_frameworks_dep kcoreaddons) + $(add_frameworks_dep kcrash) + $(add_frameworks_dep kdbusaddons) + $(add_frameworks_dep kdeclarative) + $(add_frameworks_dep kdelibs4support) + $(add_frameworks_dep kdesu) + $(add_frameworks_dep kglobalaccel) + $(add_frameworks_dep kguiaddons) + $(add_frameworks_dep ki18n) + $(add_frameworks_dep kiconthemes) + $(add_frameworks_dep kidletime) + $(add_frameworks_dep kio) + $(add_frameworks_dep kitemmodels) + $(add_frameworks_dep kitemviews) + $(add_frameworks_dep kjobwidgets) + $(add_frameworks_dep kjs) + $(add_frameworks_dep kjsembed) + $(add_frameworks_dep knewstuff) + $(add_frameworks_dep knotifications) + $(add_frameworks_dep knotifyconfig) + $(add_frameworks_dep kpackage) + $(add_frameworks_dep krunner) + $(add_frameworks_dep kservice) + $(add_frameworks_dep ktexteditor) + $(add_frameworks_dep ktextwidgets) + $(add_frameworks_dep kwallet) + $(add_frameworks_dep kwayland) + $(add_frameworks_dep kwidgetsaddons) + $(add_frameworks_dep kwindowsystem) + $(add_frameworks_dep kxmlgui) + $(add_frameworks_dep kxmlrpcclient) + $(add_frameworks_dep plasma) + $(add_frameworks_dep solid) + $(add_plasma_dep kscreenlocker) + $(add_plasma_dep kwin) + $(add_plasma_dep libksysguard) + $(add_qt_dep qtconcurrent) + $(add_qt_dep qtdbus) + $(add_qt_dep qtdeclarative 'widgets') + $(add_qt_dep qtgui 'jpeg') + $(add_qt_dep qtnetwork) + $(add_qt_dep qtscript) + $(add_qt_dep qtsql) + $(add_qt_dep qtwidgets) + $(add_qt_dep qtx11extras) + $(add_qt_dep qtxml) + media-libs/phonon[qt5] + sys-libs/zlib + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + x11-libs/libXau + x11-libs/libxcb + x11-libs/libXfixes + x11-libs/libXrender + x11-libs/xcb-util + x11-libs/xcb-util-image + calendar? ( $(add_kdeapps_dep kholidays) ) + geolocation? ( $(add_frameworks_dep networkmanager-qt) ) + gps? ( sci-geosciences/gpsd ) + prison? ( $(add_frameworks_dep prison) ) + qalculate? ( sci-libs/libqalculate:= ) + semantic-desktop? ( $(add_frameworks_dep baloo) ) +" +RDEPEND="${COMMON_DEPEND} + $(add_frameworks_dep kded) + $(add_kdeapps_dep kio-extras) + $(add_plasma_dep kde-cli-tools) + $(add_plasma_dep ksysguard) + $(add_plasma_dep milou) + $(add_plasma_dep plasma-integration) + $(add_qt_dep qdbus) + $(add_qt_dep qtgraphicaleffects) + $(add_qt_dep qtpaths) + $(add_qt_dep qtquickcontrols 'widgets') + app-text/iso-codes + x11-apps/mkfontdir + x11-apps/xmessage + x11-apps/xprop + x11-apps/xrdb + x11-apps/xset + x11-apps/xsetroot + !dev-libs/xembed-sni-proxy + !kde-plasma/freespacenotifier:4 + !kde-plasma/libtaskmanager:4 + !kde-plasma/kcminit:4 + !kde-plasma/kdebase-startkde:4 + !kde-plasma/klipper:4 + !kde-plasma/krunner:4 + !kde-plasma/ksmserver:4 + !kde-plasma/ksplash:4 + !kde-plasma/plasma-workspace:4 +" +DEPEND="${COMMON_DEPEND} + x11-proto/xproto +" + +PATCHES=( + "${FILESDIR}/${PN}-5.4-startkde-script.patch" + "${FILESDIR}/${P}-xembedsniproxy.patch" +) + +RESTRICT+=" test" + +src_prepare() { + kde5_src_prepare + + sed -e "s|\`qtpaths|\`$(qt5_get_bindir)/qtpaths|" \ + -i startkde/startkde.cmake startkde/startplasmacompositor.cmake || die +} + +src_configure() { + local mycmakeargs=( + $(cmake-utils_use_find_package calendar KF5Holidays) + $(cmake-utils_use_find_package geolocation KF5NetworkManagerQt) + $(cmake-utils_use_find_package gps libgps) + $(cmake-utils_use_find_package prison KF5Prison) + $(cmake-utils_use_find_package qalculate Qalculate) + $(cmake-utils_use_find_package semantic-desktop KF5Baloo) + ) + + kde5_src_configure +} + +src_install() { + kde5_src_install + + # startup and shutdown scripts + insinto /etc/plasma/startup + doins "${FILESDIR}/10-agent-startup.sh" + + insinto /etc/plasma/shutdown + doins "${FILESDIR}/10-agent-shutdown.sh" +} + +pkg_postinst () { + kde5_pkg_postinst + + echo + elog "To enable gpg-agent and/or ssh-agent in Plasma sessions," + elog "edit ${EPREFIX}/etc/plasma/startup/10-agent-startup.sh and" + elog "${EPREFIX}/etc/plasma/shutdown/10-agent-shutdown.sh" + echo +} |