[Libguestfs] [PATCH] daemon: When running external commands, open stdin as /dev/null
Richard W.M. Jones
rjones at redhat.com
Wed Nov 4 16:37:32 UTC 2009
On Wed, Nov 04, 2009 at 03:10:27PM +0000, Richard W.M. Jones wrote:
> On Wed, Nov 04, 2009 at 02:49:13PM +0000, Richard W.M. Jones wrote:
> > libguestfs: error: hexdump: hexdump: /test123: hexdump: /sysroot/test123: Bad file descriptor
[...]
> Anyway, I'm still experimenting with this one ... It might be better
> just to open /dev/null for stdin, since I suppose other programs could
> be unpredictable if they have no stdin at all.
The patch below uses this approach, and I have tested it on Debian and
Fedora.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://et.redhat.com/~rjones/virt-df/
-------------- next part --------------
>From df1af0bbe21e906c11123e66ec470b60e55c9e44 Mon Sep 17 00:00:00 2001
From: Richard Jones <rjones at debian5x64.home.annexia.org>
Date: Wed, 4 Nov 2009 15:47:03 +0000
Subject: [PATCH] daemon: When running external commands, open stdin as /dev/null
Previously when we ran external commands from the daemon, stdin
(ie. fd 0) was closed. This caused a problem when running the
external hexdump command which seems to break if stdin is closed.
This patch opens stdin on /dev/null.
---
daemon/guestfsd.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c
index 8c39c39..649a630 100644
--- a/daemon/guestfsd.c
+++ b/daemon/guestfsd.c
@@ -654,6 +654,7 @@ commandrv (char **stdoutput, char **stderror, char const* const *argv)
if (pid == 0) { /* Child process. */
close (0);
+ open ("/dev/null", O_RDONLY); /* Set stdin to /dev/null (ignore failure) */
close (so_fd[0]);
close (se_fd[0]);
dup2 (so_fd[1], 1);
--
1.6.5.2
More information about the Libguestfs
mailing list