Mesa (master): loader: fix sysfs uevent file parsing

Emil Velikov evelikov at kemper.freedesktop.org
Thu Sep 1 15:15:02 UTC 2016


Module: Mesa
Branch: master
Commit: d5f65b8bf54574e45d73938702fb5505449c1b5d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d5f65b8bf54574e45d73938702fb5505449c1b5d

Author: Frank Binns <frank.binns at imgtec.com>
Date:   Thu Aug  4 15:15:23 2016 +0100

loader: fix sysfs uevent file parsing

When trying to get a device name for an fd using sysfs, it would always fail
as it was expecting key/value pairs to be delimited by '\0', which is not the
case.

Signed-off-by: Frank Binns <frank.binns at imgtec.com>
Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov at collabora.com>

---

 src/loader/loader.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/loader/loader.c b/src/loader/loader.c
index 56ffc5d..3e60e4c 100644
--- a/src/loader/loader.c
+++ b/src/loader/loader.c
@@ -645,7 +645,7 @@ sysfs_get_device_name_for_fd(int fd)
    unsigned int maj, min;
    FILE *f;
    char buf[0x40];
-   static const char match[9] = "\0DEVNAME=";
+   static const char match[9] = "\nDEVNAME=";
    int expected = 1;
 
    if (dev_node_from_fd(fd, &maj, &min) < 0)
@@ -668,8 +668,10 @@ sysfs_get_device_name_for_fd(int fd)
    }
 
    strcpy(buf, "/dev/");
-   if (fgets(buf + 5, sizeof(buf) - 5, f))
+   if (fgets(buf + 5, sizeof(buf) - 5, f)) {
+      buf[strcspn(buf, "\n")] = '\0';
       device_name = strdup(buf);
+   }
 
    fclose(f);
    return device_name;




More information about the mesa-commit mailing list