Code

get_pwd_cwd(): Do not trust st_dev/st_ino blindly
[git.git] / abspath.c
index 0d561246e0a958d9a7284409b1900a82876eebf3..e7d22bf60be147c2fa6731834dcd42a132eadecd 100644 (file)
--- a/abspath.c
+++ b/abspath.c
@@ -77,7 +77,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);