[PATCH 1/2] server: don't leak fd on error

Marek Chalupa mchqwerty at gmail.com
Wed Aug 6 03:26:44 PDT 2014


Sorry, my bad, this will be closed by wl_socket_destroy, therefore this 
patch is useless.

Regards,
Marek


On 08/06/14 12:18, Marek Chalupa wrote:
> close opened fd if an error occur.
> ---
>   src/wayland-server.c | 15 ++++++++++-----
>   1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/src/wayland-server.c b/src/wayland-server.c
> index 3c162d4..ce7bbff 100644
> --- a/src/wayland-server.c
> +++ b/src/wayland-server.c
> @@ -1119,23 +1119,28 @@ _wl_display_add_socket(struct wl_display *display, struct wl_socket *s)
>   	size = offsetof (struct sockaddr_un, sun_path) + strlen(s->addr.sun_path);
>   	if (bind(s->fd, (struct sockaddr *) &s->addr, size) < 0) {
>   		wl_log("bind() failed with error: %m\n");
> -		return -1;
> +		goto err;
>   	}
>   
>   	if (listen(s->fd, 1) < 0) {
>   		wl_log("listen() failed with error: %m\n");
> -		return -1;
> +		goto err;
>   	}
>   
>   	s->source = wl_event_loop_add_fd(display->loop, s->fd,
>   					 WL_EVENT_READABLE,
>   					 socket_data, display);
> -	if (s->source == NULL) {
> -		return -1;
> -	}
> +	if (s->source == NULL)
> +		goto err;
>   
>   	wl_list_insert(display->socket_list.prev, &s->link);
>   	return 0;
> +
> +err:
> +	close(s->fd);
> +	s->fd = -1;
> +
> +	return -1;
>   }
>   
>   WL_EXPORT const char *



More information about the wayland-devel mailing list