From 8fad9b9e5d219861fc1f758216fb446cffe3817f Mon Sep 17 00:00:00 2001 From: Peter Rajnoha Date: Mon, 21 Mar 2016 15:48:36 +0100 Subject: [PATCH] dev: be safer when reading sysfs properties Check if the value we read from sysfs is not blank and replace the '\n' at the end only when needed ('\n' should usually be there for sysfs values, but better check this). --- lib/device/dev-cache.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c index 490cec3d6..d912dea88 100644 --- a/lib/device/dev-cache.c +++ b/lib/device/dev-cache.c @@ -365,6 +365,7 @@ static int _add_alias(struct device *dev, const char *path) static int _get_sysfs_value(const char *path, char *buf, size_t buf_size) { FILE *fp; + size_t len; if (!(fp = fopen(path, "r"))) { log_sys_error("fopen", path); @@ -378,7 +379,13 @@ static int _get_sysfs_value(const char *path, char *buf, size_t buf_size) return 0; } - buf[strlen(buf) - 1] = '\0'; + if (!(len = strlen(buf))) { + log_error("_get_sysfs_value: %s: no value", path); + return 0; + } + + if (buf[len - 1] == '\n') + buf[len - 1] = '\0'; if (fclose(fp)) log_sys_error("fclose", path); -- 2.43.5