From: Peter Hutterer Date: Fri, 22 Aug 2014 01:42:10 +0000 (+1000) Subject: uinput: close the managed fd on error X-Git-Tag: libevdev-1.2.99.902~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=53958c56cd486378800fe2db247fd7923a73cf6a;p=platform%2Fupstream%2Flibevdev.git uinput: close the managed fd on error Using LIBEVDEV_UINPUT_OPEN_MANAGED can leak the fd if an error occurs after opening it. Found by Coverity. Signed-off-by: Peter Hutterer --- diff --git a/libevdev/libevdev-uinput.c b/libevdev/libevdev-uinput.c index c1b20e0..ea2b025 100644 --- a/libevdev/libevdev-uinput.c +++ b/libevdev/libevdev-uinput.c @@ -279,6 +279,7 @@ libevdev_uinput_create_from_device(const struct libevdev *dev, int fd, struct li int rc; struct uinput_user_dev uidev; struct libevdev_uinput *new_device; + int close_fd_on_error = (fd == LIBEVDEV_UINPUT_OPEN_MANAGED); new_device = alloc_uinput_device(libevdev_get_name(dev)); if (!new_device) @@ -346,6 +347,8 @@ libevdev_uinput_create_from_device(const struct libevdev *dev, int fd, struct li error: rc = -errno; libevdev_uinput_destroy(new_device); + if (fd != -1 && close_fd_on_error) + close(fd); return rc; }