From: cpaul@redhat.com Date: Tue, 5 Jan 2016 16:18:30 +0000 (-0500) Subject: compositor: create_data_source(): Fix potential crash on OOM X-Git-Tag: upstream/5.0.0~1283 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c9f8f8a7f46d3cc343f232441826a25e0e14347a;p=platform%2Fupstream%2Fweston.git compositor: create_data_source(): Fix potential crash on OOM Noticed this while working on primary selection, in the event we run out of memory when trying to create a new data source, there's a chance we'll fail on wl_resource_create() and crash from source->resource being set to NULL. Signed-off-by: Lyude Reviewed-by: Marek Chalupa Reviewed-by: Bryce Harrington --- diff --git a/src/data-device.c b/src/data-device.c index d3ead5f..54541b3 100644 --- a/src/data-device.c +++ b/src/data-device.c @@ -881,6 +881,14 @@ create_data_source(struct wl_client *client, return; } + source->resource = + wl_resource_create(client, &wl_data_source_interface, 1, id); + if (source->resource == NULL) { + free(source); + wl_resource_post_no_memory(resource); + return; + } + wl_signal_init(&source->destroy_signal); source->accept = client_source_accept; source->send = client_source_send; @@ -888,8 +896,6 @@ create_data_source(struct wl_client *client, wl_array_init(&source->mime_types); - source->resource = - wl_resource_create(client, &wl_data_source_interface, 1, id); wl_resource_set_implementation(source->resource, &data_source_interface, source, destroy_data_source); }