---
src/uml/uml_driver.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c
index e2bd5f2..33849a0 100644
--- a/src/uml/uml_driver.c
+++ b/src/uml/uml_driver.c
@@ -1036,21 +1036,25 @@ static char *umlGetCapabilities(virConnectPtr conn) {
-static int umlGetProcessInfo(unsigned long long *cpuTime, int pid) {
- char proc[PATH_MAX];
+static int umlGetProcessInfo(unsigned long long *cpuTime, int pid)
+{
+ char *proc;
FILE *pidinfo;
unsigned long long usertime, systime;
- if (snprintf(proc, sizeof(proc), "/proc/%d/stat", pid) >=
(int)sizeof(proc)) {
+ if (virAsprintf(&proc, "/proc/%d/stat", pid) < 0) {
return -1;
}
if (!(pidinfo = fopen(proc, "r"))) {
/* VM probably shut down, so fake 0 */
*cpuTime = 0;
+ VIR_FREE(proc);
return 0;
}
+ VIR_FREE(proc);
+
if (fscanf(pidinfo, "%*d %*s %*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u %llu
%llu", &usertime, &systime) != 2) {
umlDebug("not enough arg");
VIR_FORCE_FCLOSE(pidinfo);
--
1.7.0.4