Hi,
Reviewed-by: Marek Chalupa <[email protected]>
(one small comment below)
Cheers,
Marek
On 01/05/2016 05:18 PM, Lyude wrote:
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 <[email protected]>
---
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);
Maybe it would be better to free the source before posting no-memory
event, since wl_resource_post_no_memory() will try to allocate new
memory for the event (and we're already OOM)
+ 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);
}
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel