Hello community,

here is the log from the commit of package plasma5-workspace for 
openSUSE:Factory checked in at 2016-01-28 17:19:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/plasma5-workspace (Old)
 and      /work/SRC/openSUSE:Factory/.plasma5-workspace.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "plasma5-workspace"

Changes:
--------
--- /work/SRC/openSUSE:Factory/plasma5-workspace/plasma5-workspace.changes      
2016-01-20 09:52:38.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.plasma5-workspace.new/plasma5-workspace.changes 
2016-01-28 17:19:20.000000000 +0100
@@ -1,0 +2,6 @@
+Wed Jan 20 10:50:47 UTC 2016 - [email protected]
+
+- Add xembedsniproxy-check-for-null-geometry.patch: fixes an
+  xembedsniproxy crash (boo#954623, kde#355463, kde#358227)
+
+-------------------------------------------------------------------

New:
----
  xembedsniproxy-check-for-null-geometry.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ plasma5-workspace.spec ++++++
--- /var/tmp/diff_new_pack.EC7RA4/_old  2016-01-28 17:19:21.000000000 +0100
+++ /var/tmp/diff_new_pack.EC7RA4/_new  2016-01-28 17:19:21.000000000 +0100
@@ -35,6 +35,8 @@
 # PATCH-FIX_OPENSUSE fix-breeze-sddm-theme-with-many-users.patch 
[email protected] -- Asks for user/password and hide the user list when there's 
a large number of users
 Patch2:         fix-breeze-sddm-theme-with-many-users.patch
 # PATCHES 100-200 and above are from upstream 5.5 branch
+# PATCH-FIX-UPSTREAM xembedsniproxy-check-for-null-geometry.patch boo#954623, 
kde#355463, kde#358227 -- fixes an xembedsniproxy crash
+Patch100:       xembedsniproxy-check-for-null-geometry.patch
 # PATCHES 201-300 and above are from upstream master/5.6 branch
 BuildRequires:  kf5-filesystem
 BuildRequires:  update-desktop-files
@@ -203,6 +205,7 @@
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
+%patch100 -p1
 
 %build
   %cmake_kf5 -d build -- -DKDE4_COMMON_PAM_SERVICE=xdm 
-DKDE_DEFAULT_HOME=.kde4 -DCMAKE_INSTALL_LOCALEDIR=share/locale/kf5

++++++ xembedsniproxy-check-for-null-geometry.patch ++++++
From: David Edmundson <[email protected]>
Date: Mon, 21 Dec 2015 23:09:50 +0000
Subject: Check for null geometry in client window
X-Git-Url: 
http://quickgit.kde.org/?p=plasma-workspace.git&a=commitdiff&h=6232362cca7021e5b436d267e07f9d6875a20a4c
---
Check for null geometry in client window

BUG: 355463
---


--- a/xembed-sni-proxy/sniproxy.cpp
+++ b/xembed-sni-proxy/sniproxy.cpp
@@ -158,23 +158,30 @@
                              windowMoveConfigVals);
 
 
+    QSize clientWindowSize;
+
+    if (clientGeom) {
+        clientWindowSize = QSize(clientGeom->width, clientGeom->height);
+    }
     //if the window is a clearly stupid size resize to be something sensible
     //this is needed as chormium and such when resized just fill the icon with 
transparent space and only draw in the middle
     //however spotify does need this as by default the window size is 900px 
wide.
     //use an artbitrary heuristic to make sure icons are always sensible
-    if (clientGeom->width > s_embedSize || clientGeom->height > s_embedSize )
+    if (clientWindowSize.isEmpty() || clientWindowSize.width() > s_embedSize 
|| clientWindowSize.height() > s_embedSize )
     {
+       qCDebug(SNIPROXY) << "Resizing window" << wid << Title() << "from w*h" 
<< clientWindowSize;
+
         const uint32_t windowMoveConfigVals[2] = { s_embedSize, s_embedSize };
         xcb_configure_window(c, wid,
                                 XCB_CONFIG_WINDOW_WIDTH | 
XCB_CONFIG_WINDOW_HEIGHT,
                                 windowMoveConfigVals);
-       qCDebug(SNIPROXY) << "Resizing window" << wid << Title() << "from w*h" 
<< clientGeom->width << clientGeom->height;
+        clientWindowSize = QSize(s_embedSize, s_embedSize);
     }
 
     //show the embedded window otherwise nothing happens
     xcb_map_window(c, wid);
 
-    xcb_clear_area(c, 0, wid, 0, 0, qMin(clientGeom->width, s_embedSize), 
qMin(clientGeom->height, s_embedSize));
+    xcb_clear_area(c, 0, wid, 0, 0, clientWindowSize.width(), 
clientWindowSize.height());
 
     xcb_flush(c);
 
@@ -245,6 +252,10 @@
     auto cookie = xcb_get_geometry(c, m_windowId);
     QScopedPointer<xcb_get_geometry_reply_t, QScopedPointerPodDeleter>
         geom(xcb_get_geometry_reply(c, cookie, Q_NULLPTR));
+
+    if (!geom) {
+        return QImage();
+    }
 
     xcb_image_t *image = xcb_image_get(c, m_windowId, 0, 0, geom->width, 
geom->height, 0xFFFFFF, XCB_IMAGE_FORMAT_Z_PIXMAP);
 


Reply via email to