diff options
author | Derek Foreman <derekf@osg.samsung.com> | 2018-03-13 11:34:47 -0500 |
---|---|---|
committer | Derek Foreman <derekf@osg.samsung.com> | 2018-03-14 19:02:48 -0500 |
commit | d1510b4f40aad09372e9721d91d7df41fdaece71 (patch) | |
tree | 9232cf03180d5beadaad0b3b4cd917664e1431d9 | |
parent | 64a26bc192b7125b23c95725804ced0e0180b4e3 (diff) | |
download | weston-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.c | 3 |
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 |