[PATCH libinput] libinput: Fix the close_restricted interface callback

Peter Hutterer peter.hutterer at who-t.net
Mon Mar 3 21:23:56 PST 2014


On Sat, Mar 01, 2014 at 02:19:03PM -0500, Jasper St. Pierre wrote:
> libinput is supposed to take a close callback in its interface
> to allow you to call out to a privileged API to close FDs. But
> the FD that libinput passes you is bogus, because
> libinput_remove_source closes the FD on which it's passed. This
> is really bad, as the libinput_source really doesn't own the FD
> which it's passed, so it shouldn't be trying to close() it.
> 
> Only one out of the four users of libinput_remove_source actually
> wants their FD closed, so move the close() call there.

pushed, thanks.

Cheers,
   Peter

> ---
>  src/evdev-touchpad.c | 1 +
>  src/libinput.c       | 1 -
>  2 files changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/evdev-touchpad.c b/src/evdev-touchpad.c
> index 8185bf2..65c5ea0 100644
> --- a/src/evdev-touchpad.c
> +++ b/src/evdev-touchpad.c
> @@ -714,6 +714,7 @@ touchpad_destroy(struct evdev_dispatch *dispatch)
>  	struct libinput *libinput = touchpad->device->base.seat->libinput;
>  
>  	touchpad->filter->interface->destroy(touchpad->filter);
> +	close(touchpad->fsm.timer.fd);
>  	libinput_remove_source(libinput, touchpad->fsm.timer.source);
>  	free(touchpad->fsm.events);
>  	free(dispatch);
> diff --git a/src/libinput.c b/src/libinput.c
> index 58b87b0..182c401 100644
> --- a/src/libinput.c
> +++ b/src/libinput.c
> @@ -442,7 +442,6 @@ libinput_remove_source(struct libinput *libinput,
>  		       struct libinput_source *source)
>  {
>  	epoll_ctl(libinput->epoll_fd, EPOLL_CTL_DEL, source->fd, NULL);
> -	close(source->fd);
>  	source->fd = -1;
>  	list_insert(&libinput->source_destroy_list, &source->link);
>  }
> -- 
> 1.8.5.3
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> 


More information about the wayland-devel mailing list