setup: make sure git dir path is in a permanent buffer
authorJonathan Nieder <jrnieder@gmail.com>
Sat, 2 Oct 2010 08:36:52 +0000 (03:36 -0500)
committerJunio C Hamano <gitster@pobox.com>
Sun, 3 Oct 2010 23:50:54 +0000 (16:50 -0700)
commit06f3549d7146179c5cafe8f76e8fcbc064eba2f7
treec8516c89ed7f5732a15c914fdcfed1e0ae651d12
parent7f7868eadce9b6a9d93e7e8bc80fd58c5e64cc67
setup: make sure git dir path is in a permanent buffer

If setup_git_env() is run before the usual repository discovery
sequence and .git is a file with the text

gitdir: <path>

(with <path> any string) then the in-core git_dir variable is set to
the result of converting <path> to an absolute path using
make_absolute_path().

Unfortunately make_absolute_path() returns its result in a static
buffer that is overwritten by later calls.  Such a call could cause
later accesses to git_dir (from git_pathdup(), for example) to read
the wrong path, leaving git very confused.

It is not obvious whether any existing code in git will trigger the
problem, but in any case, it is worth a few dozen bytes to copy the
return value from make_absolute_path() for some added peace of mind.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
environment.c