From: Vincent Brillault Date: Tue, 23 Sep 2014 20:28:52 +0000 (+0200) Subject: Turbostat: check return value of vsnprintf X-Git-Tag: collectd-5.5.0~24^2~34 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=3228135fb721281f1134cb4e17c583c8cdfc1909;p=collectd.git Turbostat: check return value of vsnprintf --- diff --git a/src/turbostat.c b/src/turbostat.c index cc0be207..6fa172d0 100644 --- a/src/turbostat.c +++ b/src/turbostat.c @@ -262,6 +262,7 @@ enum return_values { ERR_CPU_ALLOC, ERR_NOT_ROOT, UNSUPPORTED_CPU, + ERR_PATH_TOO_LONG, }; @@ -1069,11 +1070,16 @@ parse_int_file(const char *fmt, ...) va_list args; char path[PATH_MAX]; FILE *filep; - int value; + int len, value; va_start(args, fmt); - vsnprintf(path, sizeof(path), fmt, args); + len = vsnprintf(path, sizeof(path), fmt, args); va_end(args); + if (len < 0 || len >= PATH_MAX) { + ERROR("Turbostat plugin: path truncated: '%s'", path); + return -ERR_PATH_TOO_LONG; + } + filep = fopen(path, "r"); if (!filep) { ERROR("Turbostat plugin: Failed to open '%s'", path);