commit:     78f86a70ce899cd549825f5125df1d86ebc00381
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 17 18:09:01 2017 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Jun 17 18:29:57 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=78f86a70

kde-plasma/plasma-workspace: Fix xembedsniproxy memleak/crash

Package-Manager: Portage-2.3.5, Repoman-2.3.1

 .../plasma-workspace-5.10.2-xembedsniproxy.patch   |  32 ++++
 .../plasma-workspace-5.10.2-r1.ebuild              | 166 +++++++++++++++++++++
 2 files changed, 198 insertions(+)

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 00000000000..7e47893dc6b
--- /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 <[email protected]>
+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 00000000000..81958ff0e7f
--- /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
+}

Reply via email to