From d8446fdb2e9ad7e5f2f66a87619719bc58b68bbf Mon Sep 17 00:00:00 2001 From: Enno Boland Date: Tue, 26 Jun 2018 17:06:44 +0200 Subject: [PATCH] libinput: fix segfault when calling libinput list-devices --- .../patches/fix-null-derefencing.patch | 59 +++++++++++++++++++ srcpkgs/libinput/template | 2 +- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/libinput/patches/fix-null-derefencing.patch diff --git a/srcpkgs/libinput/patches/fix-null-derefencing.patch b/srcpkgs/libinput/patches/fix-null-derefencing.patch new file mode 100644 index 00000000000..3a14e571334 --- /dev/null +++ b/srcpkgs/libinput/patches/fix-null-derefencing.patch @@ -0,0 +1,59 @@ +From 7c51c881dc72827ca50ae9eea3d123eef9cb4a66 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +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 +--- + 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 + + diff --git a/srcpkgs/libinput/template b/srcpkgs/libinput/template index 21079753af8..9ad80ae7315 100644 --- a/srcpkgs/libinput/template +++ b/srcpkgs/libinput/template @@ -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"