[libvirt] [PATCH 18/20] uml: Remove PATH_MAX sized stack allocation from /proc parsing code

Matthias Bolte matthias.bolte at googlemail.com
Sun Apr 3 09:21:31 UTC 2011


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




More information about the libvir-list mailing list