Module Name: src Committed By: yamt Date: Thu Jun 27 23:22:04 UTC 2013
Modified Files: src/bin/sh: eval.c redir.c Log Message: fix descriptor leaks. PR/47805 this fix was taken from FreeBSD SVN rev 199953 (Jilles Tjoelker) ------------------------------------------------------------------------ r199953 | jilles | 2009-11-30 07:33:59 +0900 (Mon, 30 Nov 2009) | 16 lines Fix some cases where file descriptors from redirections leak to programs. - Redirecting fds that were not open before kept two copies of the redirected file. sh -c '{ :; } 7>/dev/null; fstat -p $$; true' (both fd 7 and 10 remained open) - File descriptors used to restore things after redirection were not set close-on-exec, instead they were explicitly closed before executing a program normally and before executing a shell procedure. The latter must remain but the former is replaced by close-on-exec. sh -c 'exec 7</; { exec fstat -p $$; } 7>/dev/null; true' (fd 10 remained open) The examples above are simpler than the testsuite because I do not want to use fstat or procstat in the testsuite. To generate a diff of this commit: cvs rdiff -u -r1.106 -r1.107 src/bin/sh/eval.c cvs rdiff -u -r1.34 -r1.35 src/bin/sh/redir.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.