From f456ed308c2f41c671279c4574b1c5f922f6f8c8 Mon Sep 17 00:00:00 2001 From: Fumitoshi UKAI Date: Tue, 24 Sep 2002 17:35:52 +0000 Subject: [w3m-dev 03321] Bug#162104: file descriptors 1 and 2 are closed rather than reopened to /dev/null * etc.c (mySystem): fd 0,1,2 redirect /dev/null, close all other fds From: Fumitoshi UKAI --- ChangeLog | 7 ++++++- etc.c | 11 ++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb01f65..61728f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-09-25 Fumitoshi UKAI + + * [w3m-dev 03321] Bug#162104: file descriptors 1 and 2 are closed rather than reopened to /dev/null + * etc.c (mySystem): fd 0,1,2 redirect /dev/null, close all other fds + 2002-09-25 AIDA Shinra * [w3m-dev 03319] mailto @@ -3822,4 +3827,4 @@ * release-0-2-1 * import w3m-0.2.1 -$Id: ChangeLog,v 1.429 2002/09/24 17:06:04 ukai Exp $ +$Id: ChangeLog,v 1.430 2002/09/24 17:35:52 ukai Exp $ diff --git a/etc.c b/etc.c index 08affeb..0879c4b 100644 --- a/etc.c +++ b/etc.c @@ -1,4 +1,4 @@ -/* $Id: etc.c,v 1.23 2002/09/24 16:35:02 ukai Exp $ */ +/* $Id: etc.c,v 1.24 2002/09/24 17:35:52 ukai Exp $ */ #include "fm.h" #include #include "myctype.h" @@ -1208,11 +1208,16 @@ mySystem(char *command, int background) int pid; flush_tty(); if ((pid = fork()) == 0) { + int fd, i; reset_signals(); SETPGRP(); close_tty(); - fclose(stdout); - fclose(stderr); + dup2(open("/dev/null", O_RDONLY), 0); + dup2(open("/dev/null", O_WRONLY), 1); + dup2(fd = open("/dev/null", O_WRONLY), 2); + /* close all other file descriptors (socket, ...) */ + for (i = 3; i <= fd; i++) + close(i); execl("/bin/sh", "sh", "-c", command, NULL); exit(127); } -- cgit v1.2.3