summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Klokkhammer Helsing <johan.helsing@qt.io>2018-03-07 16:32:34 +0100
committerJohan Helsing <johan.helsing@qt.io>2018-03-15 12:49:07 +0000
commitc5b6bec872b2f22ec7b8d749d5f72b5ed0c4ddd4 (patch)
tree47d5f18998470292f0bd749d2daa3704957e86c8
parent46ab6e3e398c8ccff612bca746ba417ec974f975 (diff)
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.cpp4
-rw-r--r--src/compositor/extensions/qwaylandxdgshellv5.cpp4
-rw-r--r--src/compositor/extensions/qwaylandxdgshellv6.cpp4
3 files changed, 12 insertions, 0 deletions
diff --git a/src/compositor/extensions/qwaylandwlshell.cpp b/src/compositor/extensions/qwaylandwlshell.cpp
index e90891592..d932a06c9 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 d696e082a..cbcd50ae4 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 cb4a199f4..341b0232d 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)));