summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHardening <rdp.effort@gmail.com>2014-03-18 11:29:00 +0100
committerKristian Høgsberg <krh@bitplanet.net>2014-04-01 16:47:04 -0700
commit256324773f9d890f25da54e0dec1a08a405156d9 (patch)
tree50d80b41debefb0f48d3cab9a93ed8127a461700
parent051f3838de9959087bc0a0ba76d3737588a1f67f (diff)
Add error handling for wl_cursors
This patch adds some error management in wayland cursors Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
-rw-r--r--cursor/wayland-cursor.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/cursor/wayland-cursor.c b/cursor/wayland-cursor.c
index b16f530..dba3b51 100644
--- a/cursor/wayland-cursor.c
+++ b/cursor/wayland-cursor.c
@@ -94,6 +94,8 @@ shm_pool_resize(struct shm_pool *pool, int size)
pool->data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED,
pool->fd, 0);
+ if (pool->data == (void *)-1)
+ return 0;
pool->size = size;
return 1;
@@ -391,17 +393,15 @@ wl_cursor_theme_load(const char *name, int size, struct wl_shm *shm)
name = "default";
theme->name = strdup(name);
+ if (!theme->name)
+ goto out_error_name;
theme->size = size;
theme->cursor_count = 0;
theme->cursors = NULL;
- theme->pool =
- shm_pool_create(shm, size * size * 4);
- if (!theme->pool) {
- free(theme->name);
- free(theme);
- return NULL;
- }
+ theme->pool = shm_pool_create(shm, size * size * 4);
+ if (!theme->pool)
+ goto out_error_pool;
xcursor_load_theme(name, size, load_callback, theme);
@@ -409,6 +409,12 @@ wl_cursor_theme_load(const char *name, int size, struct wl_shm *shm)
load_default_theme(theme);
return theme;
+
+out_error_pool:
+ free(theme->name);
+out_error_name:
+ free(theme);
+ return NULL;
}
/** Destroys a cursor theme object