libinput: fix segfault when calling libinput list-devices

This commit is contained in:
Enno Boland 2018-06-26 17:06:44 +02:00
parent e57aef15bf
commit d8446fdb2e
No known key found for this signature in database
GPG key ID: D09964719BDE9971
2 changed files with 60 additions and 1 deletions

View file

@ -0,0 +1,59 @@
From 7c51c881dc72827ca50ae9eea3d123eef9cb4a66 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Wed, 20 Jun 2018 07:56:05 +1000
Subject: [PATCH] tools: pass a valid grab parameter to list-devices
My kingdome for a compiler warning. Or a scan-build warning. Or a coverity
warning. Or anything... But no, nothing.
Also make the open_restricted() more robust to a NULL userdata, because
effectively that's what we were passing here.
Fixes https://gitlab.freedesktop.org/libinput/libinput/issues/50
Introduced in 0a13223c39fdf0f079715bf83d498c0dcd9cf4f8
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
---
tools/libinput-list-devices.c | 3 ++-
tools/shared.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/tools/libinput-list-devices.c b/tools/libinput-list-devices.c
index aa225ca..4cbdf77 100644
--- tools/libinput-list-devices.c
+++ tools/libinput-list-devices.c
@@ -372,6 +372,7 @@ main(int argc, char **argv)
{
struct libinput *li;
struct libinput_event *ev;
+ bool grab = false;
/* This is kept for backwards-compatibility with the old
libinput-list-devices */
@@ -388,7 +389,7 @@ main(int argc, char **argv)
}
}
- li = tools_open_backend(BACKEND_UDEV, "seat0", false, false);
+ li = tools_open_backend(BACKEND_UDEV, "seat0", false, &grab);
if (!li)
return 1;
diff --git a/tools/shared.c b/tools/shared.c
index d1f0270..d3fb629 100644
--- tools/shared.c
+++ tools/shared.c
@@ -232,7 +232,7 @@ open_restricted(const char *path, int flags, void *user_data)
if (fd < 0)
fprintf(stderr, "Failed to open %s (%s)\n",
path, strerror(errno));
- else if (*grab && ioctl(fd, EVIOCGRAB, (void*)1) == -1)
+ else if (grab && *grab && ioctl(fd, EVIOCGRAB, (void*)1) == -1)
fprintf(stderr, "Grab requested, but failed for %s (%s)\n",
path, strerror(errno));
--
libgit2 0.27.1

View file

@ -1,7 +1,7 @@
# Template file for 'libinput'
pkgname=libinput
version=1.11.1
revision=1
revision=2
build_style=meson
configure_args="-Ddebug-gui=false -Ddocumentation=false"
hostmakedepends="pkg-config valgrind"