git: ensure 0/1/2 are open in main()
Not having an open FD in the 0--2 range can lead to strange results, for example, a subsequent open() may return 2 (stderr) and then a die() would clobber this file. git-daemon and git-shell already guarded against this, but apparently users also manage to trip over it in other git commands. So we call sanitize_stdfds() during main git startup. Since these FDs are inherited, this covers all use of 'git foo ...', and all internal C commands when called directly. It does not fix shell/perl commands called directly. Signed-off-by: Thomas Rast <trast@inf.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
1d999ddd1d
commit
a11c39646c
7
git.c
7
git.c
|
@ -505,6 +505,13 @@ int main(int argc, const char **argv)
|
|||
if (!cmd)
|
||||
cmd = "git-help";
|
||||
|
||||
/*
|
||||
* Always open file descriptors 0/1/2 to avoid clobbering files
|
||||
* in die(). It also avoids messing up when the pipes are dup'ed
|
||||
* onto stdin/stdout/stderr in the child processes we spawn.
|
||||
*/
|
||||
sanitize_stdfds();
|
||||
|
||||
git_setup_gettext();
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue