From 0250a740c2320d0eeafabfedcbea20ef95b45f43 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 24 Jul 2014 13:17:47 -0700 Subject: [PATCH] xwayland: Better handle a race with X If X windows are created and destroyed very fast sometimes the WM window object gets created and destroyed before we get around to handling client messages. Failing to check that the window is still valid can result in a segfault. --- xwayland/window-manager.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c index 5d3a2e5..6cac278 100644 --- a/xwayland/window-manager.c +++ b/xwayland/window-manager.c @@ -1403,6 +1403,12 @@ weston_wm_handle_client_message(struct weston_wm *wm, client_message->data.data32[4], client_message->window); + /* The window may get created and destroyed before we actually + * handle the message. If it doesn't exist, bail. + */ + if (!window) + return; + if (client_message->type == wm->atom.net_wm_moveresize) weston_wm_window_handle_moveresize(window, client_message); else if (client_message->type == wm->atom.net_wm_state) -- 2.7.4