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@imgtec.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
Frank Binns 2016-08-04 15:15:23 +01:00 committed by Emil Velikov
parent d6f669ba83
commit d5f65b8bf5
1 changed files with 4 additions and 2 deletions

View File

@ -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;