From d6c6f2977de84d54395def96e18a448ae68bf711 Mon Sep 17 00:00:00 2001 From: "U. Artie Eoff" Date: Fri, 10 Jan 2014 14:33:36 -0800 Subject: cursor: check for memory allocation errors Signed-off-by: U. Artie Eoff --- cursor/wayland-cursor.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'cursor') diff --git a/cursor/wayland-cursor.c b/cursor/wayland-cursor.c index e41b00f..b16f530 100644 --- a/cursor/wayland-cursor.c +++ b/cursor/wayland-cursor.c @@ -261,6 +261,11 @@ load_default_theme(struct wl_cursor_theme *theme) theme->cursor_count = ARRAY_LENGTH(cursor_metadata); theme->cursors = malloc(theme->cursor_count * sizeof(*theme->cursors)); + if (theme->cursors == NULL) { + theme->cursor_count = 0; + return; + } + for (i = 0; i < theme->cursor_count; ++i) { theme->cursors[i] = wl_cursor_create_from_data(&cursor_metadata[i], theme); @@ -295,6 +300,8 @@ wl_cursor_create_from_xcursor_images(XcursorImages *images, for (i = 0; i < images->nimage; i++) { image = malloc(sizeof *image); + if (image == NULL) + break; image->theme = theme; image->buffer = NULL; @@ -349,7 +356,12 @@ load_callback(XcursorImages *images, void *data) realloc(theme->cursors, theme->cursor_count * sizeof theme->cursors[0]); - theme->cursors[theme->cursor_count - 1] = cursor; + if (theme->cursors == NULL) { + theme->cursor_count--; + free(cursor); + } else { + theme->cursors[theme->cursor_count - 1] = cursor; + } } XcursorImagesDestroy(images); -- cgit v1.2.3