diff --git a/ChangeLog b/ChangeLog index 921ca8fe88..19ba4fbcd8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Mar 16 11:40:00 CET 2009 Daniel Veillard + + * qemud/qemud.c src/cgroup.c src/uml_driver.c src/util.c: close + some potential FILE * leaks + Mon Mar 16 10:35:00 GMT 2009 Daniel P. Berrange * qemud/event.c: Fix dispatch of FD events when one or more diff --git a/qemud/qemud.c b/qemud/qemud.c index fd315fc20d..4f0435500c 100644 --- a/qemud/qemud.c +++ b/qemud/qemud.c @@ -488,7 +488,7 @@ static int qemudWritePidFile(const char *pidFile) { if (fprintf(fh, "%lu\n", (unsigned long)getpid()) < 0) { VIR_ERROR(_("Failed to write to pid file '%s' : %s"), pidFile, virStrerror(errno, ebuf, sizeof ebuf)); - close(fd); + fclose(fh); return -1; } diff --git a/src/cgroup.c b/src/cgroup.c index 5af44bd93e..d1d44a2e45 100644 --- a/src/cgroup.c +++ b/src/cgroup.c @@ -57,7 +57,7 @@ void virCgroupFree(virCgroupPtr *group) static virCgroupPtr virCgroupGetMount(const char *controller) { - FILE *mounts; + FILE *mounts = NULL; struct mntent entry; char buf[CGROUP_MAX_VAL]; virCgroupPtr root = NULL; @@ -90,6 +90,8 @@ static virCgroupPtr virCgroupGetMount(const char *controller) return root; err: + if (mounts != NULL) + fclose(mounts); virCgroupFree(&root); return NULL; diff --git a/src/uml_driver.c b/src/uml_driver.c index 1dc7ccdfea..f7400f958b 100644 --- a/src/uml_driver.c +++ b/src/uml_driver.c @@ -547,6 +547,7 @@ reopen: if (fscanf(file, "%d", &vm->pid) != 1) { errno = EINVAL; + fclose(file); goto cleanup; } @@ -1040,6 +1041,7 @@ static int umlGetProcessInfo(unsigned long long *cpuTime, int pid) { 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"); + fclose(pidinfo); return -1; } diff --git a/src/util.c b/src/util.c index 9b74757a4f..66ad9a4a37 100644 --- a/src/util.c +++ b/src/util.c @@ -1058,6 +1058,7 @@ int virFileReadPid(const char *dir, if (fscanf(file, "%d", pid) != 1) { rc = EINVAL; + fclose(file); goto cleanup; }