diff options
author | Hardening <rdp.effort@gmail.com> | 2014-03-18 11:29:00 +0100 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2014-04-01 16:47:04 -0700 |
commit | 256324773f9d890f25da54e0dec1a08a405156d9 (patch) | |
tree | 50d80b41debefb0f48d3cab9a93ed8127a461700 | |
parent | 051f3838de9959087bc0a0ba76d3737588a1f67f (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.c | 20 |
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 |