On Mon, Apr 30, 2012 at 12:28:26PM -0400, Stefan Berger wrote: > Addressing the following reports: > None of those reports mention daemon/libvirtd.c and yet > daemon/libvirtd.c | 24 +++++++++++++++++++----- > Index: libvirt-acl/daemon/libvirtd.c > =================================================================== > --- libvirt-acl.orig/daemon/libvirtd.c > +++ libvirt-acl/daemon/libvirtd.c > @@ -141,6 +141,7 @@ static int daemonForkIntoBackground(cons > int stdinfd = -1; > int stdoutfd = -1; > int nextpid; > + int tmpfd; > > VIR_FORCE_CLOSE(statuspipe[0]); > > @@ -151,16 +152,16 @@ static int daemonForkIntoBackground(cons > if (dup2(stdinfd, STDIN_FILENO) != STDIN_FILENO) > goto cleanup; > if (dup2(stdoutfd, STDOUT_FILENO) != STDOUT_FILENO) > - goto cleanup; > + goto cleanup_close_stdin_fileno; > if (dup2(stdoutfd, STDERR_FILENO) != STDERR_FILENO) > - goto cleanup; > + goto cleanup_close_stdout_fileno; > if (stdinfd > STDERR_FILENO && VIR_CLOSE(stdinfd) < 0) > - goto cleanup; > + goto cleanup_close_stderr_fileno; > if (stdoutfd > STDERR_FILENO && VIR_CLOSE(stdoutfd) < 0) > - goto cleanup; > + goto cleanup_close_stderr_fileno; > > if (setsid() < 0) > - goto cleanup; > + goto cleanup_close_stderr_fileno; > > nextpid = fork(); > switch (nextpid) { > @@ -172,6 +173,19 @@ static int daemonForkIntoBackground(cons > _exit(EXIT_SUCCESS); > } > > + > + cleanup_close_stderr_fileno: > + tmpfd = STDERR_FILENO; > + VIR_FORCE_CLOSE(tmpfd); > + > + cleanup_close_stdout_fileno: > + tmpfd = STDOUT_FILENO; > + VIR_FORCE_CLOSE(tmpfd); > + > + cleanup_close_stdin_fileno: > + tmpfd = STDIN_FILENO; > + VIR_FORCE_CLOSE(tmpfd); > + > cleanup: > VIR_FORCE_CLOSE(stdoutfd); > VIR_FORCE_CLOSE(stdinfd); This really seems like overkill & ugly. There is no real world leak here since this process will immediately exit. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list