diff -r 3ac19fda0bc2 tools/ioemu/vl.c --- a/tools/ioemu/vl.c Fri Mar 02 12:11:52 2007 +0000 +++ b/tools/ioemu/vl.c Tue Mar 06 11:21:52 2007 -0500 @@ -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 3ac19fda0bc2 tools/ioemu/vnc.c --- a/tools/ioemu/vnc.c Fri Mar 02 12:11:52 2007 +0000 +++ b/tools/ioemu/vnc.c Tue Mar 06 11:21:52 2007 -0500 @@ -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);