[PATCH] Do not trust PWD blindly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxx>
---

	On Fri, 8 Jul 2011, Pat Thoyts wrote:

	> ! t5516-fetch-push      (60 receive.denyCurrentBranch = updateInstead)

	This patch fixes that.

	Hannes, I have no idea whether you meant 10c4c881 to fix anything 
	on Windows.

 abspath.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/abspath.c b/abspath.c
index 01858eb..37287f8 100644
--- a/abspath.c
+++ b/abspath.c
@@ -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);
-- 
1.7.6.rc0.4047.g15f89

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]