mirror of
https://gitlab.freedesktop.org/libevdev/libevdev.git
synced 2025-12-22 16:00:08 +01:00
Fix memory leaks when failing to create a uinput device
For an invalid fd, or a failure to open the device, the pre-allocated uinput device struct would leak. We can drop the open_uinput() function now, since skipping to the error handling means we'll return -errno anyway. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
f162f00f1d
commit
fdf737494e
1 changed files with 4 additions and 13 deletions
|
|
@ -155,16 +155,6 @@ set_props(const struct libevdev *dev, int fd, struct uinput_user_dev *uidev)
|
|||
return rc;
|
||||
}
|
||||
|
||||
static int
|
||||
open_uinput(void)
|
||||
{
|
||||
int fd = open("/dev/uinput", O_RDWR|O_CLOEXEC);
|
||||
if (fd < 0)
|
||||
return -errno;
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
LIBEVDEV_EXPORT int
|
||||
libevdev_uinput_get_fd(const struct libevdev_uinput *uinput_dev)
|
||||
{
|
||||
|
|
@ -277,14 +267,15 @@ libevdev_uinput_create_from_device(const struct libevdev *dev, int fd, struct li
|
|||
return -ENOMEM;
|
||||
|
||||
if (fd == LIBEVDEV_UINPUT_OPEN_MANAGED) {
|
||||
fd = open_uinput();
|
||||
fd = open("/dev/uinput", O_RDWR|O_CLOEXEC);
|
||||
if (fd < 0)
|
||||
return fd;
|
||||
goto error;
|
||||
|
||||
new_device->fd_is_managed = 1;
|
||||
} else if (fd < 0) {
|
||||
log_bug("Invalid fd %d\n", fd);
|
||||
return -EBADF;
|
||||
errno = EBADF;
|
||||
goto error;
|
||||
}
|
||||
|
||||
memset(&uidev, 0, sizeof(uidev));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue