xfree86: ensure the readlink buffer is null-terminated

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
rpm-build 2018-10-17 09:00:59 +10:00 committed by Peter Hutterer
parent ff91c696ff
commit 71703e4e8b

View File

@ -331,12 +331,12 @@ fbdev_open(int scrnIndex, const char *dev, char **namep)
/* only touch non-PCI devices on this path */ /* only touch non-PCI devices on this path */
{ {
char buf[PATH_MAX]; char buf[PATH_MAX] = {0};
char *sysfs_path = NULL; char *sysfs_path = NULL;
char *node = strrchr(dev, '/') + 1; char *node = strrchr(dev, '/') + 1;
if (asprintf(&sysfs_path, "/sys/class/graphics/%s", node) < 0 || if (asprintf(&sysfs_path, "/sys/class/graphics/%s", node) < 0 ||
readlink(sysfs_path, buf, sizeof(buf)) < 0 || readlink(sysfs_path, buf, sizeof(buf) - 1) < 0 ||
strstr(buf, "devices/pci")) { strstr(buf, "devices/pci")) {
free(sysfs_path); free(sysfs_path);
close(fd); close(fd);