diff options
author | Thomas Rast <trast@inf.ethz.ch> | 2013-07-16 11:27:37 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-07-17 12:52:16 -0700 |
commit | a11c39646c14600d588ca55fcfe3c244b66047c7 (patch) | |
tree | 5c5a678b24661d57c5ab1890096cb35129d6862a /git.c | |
parent | 1d999ddd1daa6da2779d21b293ea9b275780bff8 (diff) | |
download | git-a11c39646c14600d588ca55fcfe3c244b66047c7.tar.gz |
git: ensure 0/1/2 are open in main()tr/protect-low-3-fds
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>
Diffstat (limited to 'git.c')
-rw-r--r-- | git.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -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(); /* |