[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] ioemu: Close file descriptors when forking processes.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1173199902 0
# Node ID 095a476a96b18c5d93b6b856bffd1f82a977e358
# Parent  2cf842558b2eabbcb33909578c14bfcb3520c50f
ioemu: Close file descriptors when forking processes.
Just leave stdin/stdout/stderr (and possibly tap fd) open.
Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx>
---
 tools/ioemu/vl.c  |    8 ++++++++
 tools/ioemu/vnc.c |    8 +++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff -r 2cf842558b2e -r 095a476a96b1 tools/ioemu/vl.c
--- a/tools/ioemu/vl.c  Tue Mar 06 16:46:20 2007 +0000
+++ b/tools/ioemu/vl.c  Tue Mar 06 16:51:42 2007 +0000
@@ -3250,6 +3250,14 @@ static int net_tap_init(VLANState *vlan,
         pid = fork();
         if (pid >= 0) {
             if (pid == 0) {
+                int open_max = sysconf(_SC_OPEN_MAX), i;
+                for (i = 0; i < open_max; i++)
+                    if (i != STDIN_FILENO &&
+                        i != STDOUT_FILENO &&
+                        i != STDERR_FILENO &&
+                        i != fd)
+                        close(i);
+
                 parg = args;
                 *parg++ = (char *)setup_script;
                 *parg++ = ifname;
diff -r 2cf842558b2e -r 095a476a96b1 tools/ioemu/vnc.c
--- a/tools/ioemu/vnc.c Tue Mar 06 16:46:20 2007 +0000
+++ b/tools/ioemu/vnc.c Tue Mar 06 16:51:42 2007 +0000
@@ -1445,7 +1445,7 @@ int vnc_display_init(DisplayState *ds, i
 
 int vnc_start_viewer(int port)
 {
-    int pid;
+    int pid, i, open_max;
     char s[16];
 
     sprintf(s, ":%d", port);
@@ -1456,6 +1456,12 @@ int vnc_start_viewer(int port)
        exit(1);
 
     case 0:    /* child */
+       open_max = sysconf(_SC_OPEN_MAX);
+       for (i = 0; i < open_max; i++)
+           if (i != STDIN_FILENO &&
+               i != STDOUT_FILENO &&
+               i != STDERR_FILENO)
+               close(i);
        execlp("vncviewer", "vncviewer", s, NULL);
        fprintf(stderr, "vncviewer execlp failed\n");
        exit(1);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.