From df3b412a254f606a79807e56961b6781fa171c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 5 Mar 2015 18:09:35 +0800 Subject: [PATCH] wayland: Kill clients who try to bind an incompatible gtk_shell version gtk_shell is not backward compatible, and clients binding to it should check whether the advertised version is the same as the client supports. https://bugzilla.gnome.org/show_bug.cgi?id=745720 --- src/wayland/meta-wayland-surface.c | 11 +++++++++++ src/wayland/protocol/gtk-shell.xml | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c index 16173bf6d..a189e2fb6 100644 --- a/src/wayland/meta-wayland-surface.c +++ b/src/wayland/meta-wayland-surface.c @@ -1619,6 +1619,17 @@ bind_gtk_shell (struct wl_client *client, uint32_t capabilities = 0; resource = wl_resource_create (client, >k_shell_interface, version, id); + + if (version != META_GTK_SHELL_VERSION) + { + wl_resource_post_error (resource, + WL_DISPLAY_ERROR_INVALID_OBJECT, + "Incompatible gtk-shell version " + "(supported version: %d)", + META_GTK_SHELL_VERSION); + return; + } + wl_resource_set_implementation (resource, &meta_wayland_gtk_shell_interface, data, NULL); if (!meta_prefs_get_show_fallback_app_menu ()) diff --git a/src/wayland/protocol/gtk-shell.xml b/src/wayland/protocol/gtk-shell.xml index a8a83ebaa..bed61d6b2 100644 --- a/src/wayland/protocol/gtk-shell.xml +++ b/src/wayland/protocol/gtk-shell.xml @@ -1,6 +1,14 @@ + + gtk_shell is a protocol extension providing additional features for + clients implementing it. It is not backward compatible, and a client must + always only bind to the specific version it implements. If a client binds + to a version different from the version the server provides, an error will + be raised. + +