[PATCH weston] compositor: create_data_source(): Fix potential crash on OOM

Lyude cpaul at redhat.com
Tue Jan 5 08:18:30 PST 2016


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 at redhat.com>
---
 src/data-device.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/data-device.c b/src/data-device.c
index d3ead5f..966d3b4 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) {
+		wl_resource_post_no_memory(resource);
+		free(source);
+		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);
 }
-- 
2.5.0



More information about the wayland-devel mailing list