[PATCH] Add error handling for wl_cursors
Hardening
rdp.effort at gmail.com
Tue Mar 18 03:29:00 PDT 2014
This patch adds some error management in wayland cursors
---
cursor/wayland-cursor.c | 20 +++++++++++++-------
1 file 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
--
1.8.1.2
More information about the wayland-devel
mailing list