summaryrefslogtreecommitdiffstats
path: root/src/compositor/extensions
diff options
context:
space:
mode:
authorJohan Klokkhammer Helsing <johan.helsing@qt.io>2018-08-28 16:29:38 +0200
committerJohan Helsing <johan.helsing@qt.io>2018-08-29 12:55:22 +0000
commit2af5dce3e7ea3e341720c4212e1d0a12ca68f41c (patch)
tree9bd99396a96089e29efba439f75115db0c6d9a4c /src/compositor/extensions
parent6f68cada7aa652ef67a4cabf3515619088759d33 (diff)
Compositor: Fix nullptr dereferences in fromResource functions
If there was no resource for the given wl_resource*, don't try to dereference it. Change-Id: I3a27a5805699148bb26029e8b4179042c3c1117a Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
Diffstat (limited to 'src/compositor/extensions')
-rw-r--r--src/compositor/extensions/qwaylandxdgshell.cpp8
-rw-r--r--src/compositor/extensions/qwaylandxdgshellv6.cpp4
2 files changed, 9 insertions, 3 deletions
diff --git a/src/compositor/extensions/qwaylandxdgshell.cpp b/src/compositor/extensions/qwaylandxdgshell.cpp
index 175caea62..90841b117 100644
--- a/src/compositor/extensions/qwaylandxdgshell.cpp
+++ b/src/compositor/extensions/qwaylandxdgshell.cpp
@@ -1127,7 +1127,9 @@ QWaylandSurfaceRole *QWaylandXdgToplevel::role()
*/
QWaylandXdgToplevel *QWaylandXdgToplevel::fromResource(wl_resource *resource)
{
- return static_cast<QWaylandXdgToplevelPrivate *>(QWaylandXdgToplevelPrivate::Resource::fromResource(resource)->xdg_toplevel_object)->q_func();
+ if (auto *r = QWaylandXdgToplevelPrivate::Resource::fromResource(resource))
+ return static_cast<QWaylandXdgToplevelPrivate *>(r->xdg_toplevel_object)->q_func();
+ return nullptr;
}
/*!
@@ -2006,7 +2008,9 @@ void QWaylandXdgPositioner::xdg_positioner_set_offset(QtWaylandServer::xdg_posit
QWaylandXdgPositioner *QWaylandXdgPositioner::fromResource(wl_resource *resource)
{
- return static_cast<QWaylandXdgPositioner *>(Resource::fromResource(resource)->xdg_positioner_object);
+ if (auto *r = Resource::fromResource(resource))
+ return static_cast<QWaylandXdgPositioner *>(r->xdg_positioner_object);
+ return nullptr;
}
Qt::Edges QWaylandXdgPositioner::convertToEdges(anchor anchor)
diff --git a/src/compositor/extensions/qwaylandxdgshellv6.cpp b/src/compositor/extensions/qwaylandxdgshellv6.cpp
index 648f2a1e1..a8b0d3914 100644
--- a/src/compositor/extensions/qwaylandxdgshellv6.cpp
+++ b/src/compositor/extensions/qwaylandxdgshellv6.cpp
@@ -1997,7 +1997,9 @@ void QWaylandXdgPositionerV6::zxdg_positioner_v6_set_offset(QtWaylandServer::zxd
QWaylandXdgPositionerV6 *QWaylandXdgPositionerV6::fromResource(wl_resource *resource)
{
- return static_cast<QWaylandXdgPositionerV6 *>(Resource::fromResource(resource)->zxdg_positioner_v6_object);
+ if (auto *r = Resource::fromResource(resource))
+ return static_cast<QWaylandXdgPositionerV6 *>(r->zxdg_positioner_v6_object);
+ return nullptr;
}
QT_END_NAMESPACE