summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2018-03-13 11:34:47 -0500
committerDerek Foreman <derekf@osg.samsung.com>2018-03-14 19:02:48 -0500
commitd1510b4f40aad09372e9721d91d7df41fdaece71 (patch)
tree9232cf03180d5beadaad0b3b4cd917664e1431d9
parent64a26bc192b7125b23c95725804ced0e0180b4e3 (diff)
downloadweston-d1510b4f40aad09372e9721d91d7df41fdaece71.tar.gz
libweston-desktop/xdg-shell-v6: Fix crash when surface has buffer at creation
When a surface has a buffer at creation time we send an error, which results in a disconnection and all resources being destroyed. Since we send that error and return before performing the configure_list init weston_desktop_xdg_surface_destroy() will walk an uninitialized list and dereference a NULL pointer. Initializing the list earlier prevents this from happening. Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
-rw-r--r--libweston-desktop/xdg-shell-v6.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/libweston-desktop/xdg-shell-v6.c b/libweston-desktop/xdg-shell-v6.c
index f9902ff0..8fa01a32 100644
--- a/libweston-desktop/xdg-shell-v6.c
+++ b/libweston-desktop/xdg-shell-v6.c
@@ -1370,6 +1370,7 @@ weston_desktop_xdg_shell_protocol_get_xdg_surface(struct wl_client *wl_client,
surface->desktop = weston_desktop_client_get_desktop(client);
surface->surface = wsurface;
+ wl_list_init(&surface->configure_list);
surface->desktop_surface =
weston_desktop_surface_create(surface->desktop, client,
@@ -1395,8 +1396,6 @@ weston_desktop_xdg_shell_protocol_get_xdg_surface(struct wl_client *wl_client,
"xdg_surface must not have a buffer at creation");
return;
}
-
- wl_list_init(&surface->configure_list);
}
static void