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)
|
if (!cmd)
|
||||||
cmd = "git-help";
|
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();
|
git_setup_gettext();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue