[PATCH wayland 2/2] cursor: fix some leaks
Kristian Høgsberg
hoegsberg at gmail.com
Mon Jul 9 15:02:51 PDT 2012
On Mon, Jul 09, 2012 at 01:34:35PM +0300, Pekka Paalanen wrote:
> - don't leak memory in shm_pool_create() on failure
> - don't leak fd in shm_pool_destroy()
> - return NULL from wl_cursor_theme_load() if pool fails
>
> Tha last one fixes a segfault, when shm_pool_create() has failed.
I think Martins series fixed this, right?
Kristian
> Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
> ---
> cursor/wayland-cursor.c | 11 ++++++++++-
> 1 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/cursor/wayland-cursor.c b/cursor/wayland-cursor.c
> index 1a312b0..bd9dfc7 100644
> --- a/cursor/wayland-cursor.c
> +++ b/cursor/wayland-cursor.c
> @@ -49,14 +49,17 @@ shm_pool_create(struct wl_shm *shm, int size)
> return NULL;
>
> pool->fd = os_create_anonymous_file(size);
> - if (pool->fd < 0)
> + if (pool->fd < 0) {
> + free(pool);
> return NULL;
> + }
>
> pool->data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED,
> pool->fd, 0);
>
> if (pool->data == MAP_FAILED) {
> close(pool->fd);
> + free(pool);
> return NULL;
> }
>
> @@ -104,6 +107,7 @@ shm_pool_destroy(struct shm_pool *pool)
> {
> munmap(pool->data, pool->size);
> wl_shm_pool_destroy(pool->pool);
> + close(pool->fd);
> free(pool);
> }
>
> @@ -277,6 +281,11 @@ wl_cursor_theme_load(const char *name, int size, struct wl_shm *shm)
>
> theme->pool =
> shm_pool_create(shm, size * size * 4);
> + if (!theme->pool) {
> + free(theme->name);
> + free(theme);
> + return NULL;
> + }
>
> xcursor_load_theme(name, size, load_callback, theme);
>
> --
> 1.7.8.6
>
More information about the wayland-devel
mailing list