diff options
author | cpaul@redhat.com <cpaul@redhat.com> | 2016-01-05 11:18:30 -0500 |
---|---|---|
committer | Bryce Harrington <bryce@osg.samsung.com> | 2016-01-13 14:44:13 -0800 |
commit | c9f8f8a7f46d3cc343f232441826a25e0e14347a (patch) | |
tree | 4452b79aaeb3679769ba9f5263a18c338cf8dcf3 | |
parent | 89324ce88820656a85f16e1c94791412d451b7ba (diff) |
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 <cpaul@redhat.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
-rw-r--r-- | src/data-device.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/data-device.c b/src/data-device.c index d3ead5f9..54541b33 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); } |