From a8aa5d608ce8ad1cffddd25cbc98d101a959a80a Mon Sep 17 00:00:00 2001 From: eplanet Date: Sun, 20 Mar 2016 11:47:56 +0100 Subject: [PATCH] Adding glob check to cpu temperature fixes #55 --- src/print_cpu_temperature.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/print_cpu_temperature.c b/src/print_cpu_temperature.c index 71ee4d4..fd2dd90 100644 --- a/src/print_cpu_temperature.c +++ b/src/print_cpu_temperature.c @@ -1,6 +1,7 @@ // vim:ts=4:sw=4:expandtab #include #include +#include #include #include #include @@ -57,8 +58,19 @@ void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const if (path == NULL) asprintf(&thermal_zone, THERMAL_ZONE, zone); - else - asprintf(&thermal_zone, path, zone); + else { + static glob_t globbuf; + if (glob(path, GLOB_NOCHECK | GLOB_TILDE, NULL, &globbuf) < 0) + die("glob() failed\n"); + if (globbuf.gl_pathc == 0) { + /* No glob matches, the specified path does not contain a wildcard. */ + asprintf(&thermal_zone, path, zone); + } else { + /* glob matched, we take the first match and ignore the others */ + asprintf(&thermal_zone, "%s", globbuf.gl_pathv[0]); + } + globfree(&globbuf); + } INSTANCE(thermal_zone);