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>
This commit is contained in:
parent
64a26bc192
commit
d1510b4f40
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue