diff options
author | Johan Klokkhammer Helsing <johan.helsing@qt.io> | 2018-03-07 16:32:34 +0100 |
---|---|---|
committer | Johan Helsing <johan.helsing@qt.io> | 2018-03-15 12:49:07 +0000 |
commit | c5b6bec872b2f22ec7b8d749d5f72b5ed0c4ddd4 (patch) | |
tree | 47d5f18998470292f0bd749d2daa3704957e86c8 | |
parent | 46ab6e3e398c8ccff612bca746ba417ec974f975 (diff) | |
download | qtwayland-c5b6bec872b2f22ec7b8d749d5f72b5ed0c4ddd4.tar.gz |
Compositor: Don't call send_configure variants with an invalid size
Print a warning and return instead.
Change-Id: I1db5109f633ee2dc7d252b387c207f474784da43
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-rw-r--r-- | src/compositor/extensions/qwaylandwlshell.cpp | 4 | ||||
-rw-r--r-- | src/compositor/extensions/qwaylandxdgshellv5.cpp | 4 | ||||
-rw-r--r-- | src/compositor/extensions/qwaylandxdgshellv6.cpp | 4 |
3 files changed, 12 insertions, 0 deletions
diff --git a/src/compositor/extensions/qwaylandwlshell.cpp b/src/compositor/extensions/qwaylandwlshell.cpp index e9089159..d932a06c 100644 --- a/src/compositor/extensions/qwaylandwlshell.cpp +++ b/src/compositor/extensions/qwaylandwlshell.cpp @@ -560,6 +560,10 @@ QSize QWaylandWlShellSurface::sizeForResize(const QSizeF &size, const QPointF &d void QWaylandWlShellSurface::sendConfigure(const QSize &size, ResizeEdge edges) { Q_D(QWaylandWlShellSurface); + if (!size.isValid()) { + qWarning() << "Can't configure wl_shell_surface with an invalid size" << size; + return; + } d->send_configure(edges, size.width(), size.height()); } diff --git a/src/compositor/extensions/qwaylandxdgshellv5.cpp b/src/compositor/extensions/qwaylandxdgshellv5.cpp index d696e082..cbcd50ae 100644 --- a/src/compositor/extensions/qwaylandxdgshellv5.cpp +++ b/src/compositor/extensions/qwaylandxdgshellv5.cpp @@ -1209,6 +1209,10 @@ QSize QWaylandXdgSurfaceV5::sizeForResize(const QSizeF &size, const QPointF &del */ uint QWaylandXdgSurfaceV5::sendConfigure(const QSize &size, const QVector<uint> &states) { + if (!size.isValid()) { + qWarning() << "Can't configure xdg surface (v5) with an invalid size" << size; + return 0; + } Q_D(QWaylandXdgSurfaceV5); auto statesBytes = QByteArray::fromRawData((char *)states.data(), states.size() * sizeof(State)); QWaylandSurface *surface = qobject_cast<QWaylandSurface *>(extensionContainer()); diff --git a/src/compositor/extensions/qwaylandxdgshellv6.cpp b/src/compositor/extensions/qwaylandxdgshellv6.cpp index cb4a199f..341b0232 100644 --- a/src/compositor/extensions/qwaylandxdgshellv6.cpp +++ b/src/compositor/extensions/qwaylandxdgshellv6.cpp @@ -918,6 +918,10 @@ QSize QWaylandXdgToplevelV6::sizeForResize(const QSizeF &size, const QPointF &de */ uint QWaylandXdgToplevelV6::sendConfigure(const QSize &size, const QVector<QWaylandXdgToplevelV6::State> &states) { + if (!size.isValid()) { + qWarning() << "Can't configure zxdg_toplevel_v6 with an invalid size" << size; + return 0; + } Q_D(QWaylandXdgToplevelV6); auto statesBytes = QByteArray::fromRawData(reinterpret_cast<const char *>(states.data()), states.size() * static_cast<int>(sizeof(State))); |