mirror of
https://github.com/git/git.git
synced 2026-03-18 04:30:09 +01:00
Do not trust PWD blindly
At least on Windows, chdir() does not update PWD. Unfortunately, stat()
does not fill any ino or dev fields anymore, so get_pwd_cwd() is not
able to tell.
But there is a telltale: both ino and dev are 0 when they are not filled
correctly, so let's be extra cautious.
This happens to fix a bug in "get-receive-pack working_directory/" when
the GIT_DIR would not be set correctly due to absolute_path(".")
returning the wrong value.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
@@ -102,7 +102,8 @@ static const char *get_pwd_cwd(void)
|
||||
pwd = getenv("PWD");
|
||||
if (pwd && strcmp(pwd, cwd)) {
|
||||
stat(cwd, &cwd_stat);
|
||||
if (!stat(pwd, &pwd_stat) &&
|
||||
if ((cwd_stat.st_dev || cwd_stat.st_ino) &&
|
||||
!stat(pwd, &pwd_stat) &&
|
||||
pwd_stat.st_dev == cwd_stat.st_dev &&
|
||||
pwd_stat.st_ino == cwd_stat.st_ino) {
|
||||
strlcpy(cwd, pwd, PATH_MAX);
|
||||
|
||||
Reference in New Issue
Block a user