From b0cd07bf753f7621c75ead1812a7bf97a2e86a55 Mon Sep 17 00:00:00 2001 From: Greg V Date: Sun, 14 Oct 2018 15:15:15 +0300 Subject: quirks: use basename in a POSIX compliant way The POSIX version of basename modifies the string (and therefore crashes on static strings), so use safe_strdup before calling it. glibc provides a POSIX version when libgen.h is included. FreeBSD 12 provides a POSIX version when nothing is included, which was causing a segfault. Using the POSIX version correctly is the right way to avoid any such issues. --- src/quirks.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/quirks.c b/src/quirks.c index a65ce4fb..8b400fb7 100644 --- a/src/quirks.c +++ b/src/quirks.c @@ -34,6 +34,7 @@ #include #include #include +#include #include "libinput-versionsort.h" #include "libinput-util.h" @@ -413,7 +414,9 @@ section_new(const char *path, const char *name) { struct section *s = zalloc(sizeof(*s)); - xasprintf(&s->name, "%s (%s)", name, basename(path)); + char *path_dup = safe_strdup(path); + xasprintf(&s->name, "%s (%s)", name, basename(path_dup)); + free(path_dup); list_init(&s->link); list_init(&s->properties); -- cgit v1.2.1