Commit d1510b4f authored by Derek Foreman's avatar Derek Foreman

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: default avatarDerek Foreman <derekf@osg.samsung.com>
Reviewed-by: Quentin Glidic's avatarQuentin Glidic <sardemff7+git@sardemff7.net>
parent 64a26bc1
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment