While reviewing the code due to what seems to be a FILE * leak I found the following problems, probably not what got me in troubles but should still be fixed, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/
Index: qemud/qemud.c =================================================================== RCS file: /data/cvs/libxen/qemud/qemud.c,v retrieving revision 1.146 diff -u -p -u -r1.146 qemud.c --- qemud/qemud.c 3 Mar 2009 08:25:50 -0000 1.146 +++ qemud/qemud.c 13 Mar 2009 17:15:20 -0000 @@ -488,7 +488,7 @@ static int qemudWritePidFile(const char 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; } Index: src/cgroup.c =================================================================== RCS file: /data/cvs/libxen/src/cgroup.c,v retrieving revision 1.9 diff -u -p -u -r1.9 cgroup.c --- src/cgroup.c 6 Mar 2009 14:44:05 -0000 1.9 +++ src/cgroup.c 13 Mar 2009 17:15:21 -0000 @@ -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(co return root; err: + if (mounts != NULL) + fclose(mounts); virCgroupFree(&root); return NULL; Index: src/uml_driver.c =================================================================== RCS file: /data/cvs/libxen/src/uml_driver.c,v retrieving revision 1.25 diff -u -p -u -r1.25 uml_driver.c --- src/uml_driver.c 3 Mar 2009 09:14:28 -0000 1.25 +++ src/uml_driver.c 13 Mar 2009 17:15:21 -0000 @@ -546,6 +546,7 @@ reopen: if (fscanf(file, "%d", &vm->pid) != 1) { errno = EINVAL; + fclose(file); goto cleanup; } @@ -1039,6 +1040,7 @@ static int umlGetProcessInfo(unsigned lo 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; } Index: src/util.c =================================================================== RCS file: /data/cvs/libxen/src/util.c,v retrieving revision 1.93 diff -u -p -u -r1.93 util.c --- src/util.c 3 Mar 2009 12:03:44 -0000 1.93 +++ src/util.c 13 Mar 2009 17:15:21 -0000 @@ -1058,6 +1058,7 @@ int virFileReadPid(const char *dir, if (fscanf(file, "%d", pid) != 1) { rc = EINVAL; + fclose(file); goto cleanup; }
-- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list