git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Handle double slashes in make_relative_path()
@ 2010-01-22  0:07 Thomas Rast
  2010-01-22  1:40 ` Junio C Hamano
  0 siblings, 1 reply; 20+ messages in thread
From: Thomas Rast @ 2010-01-22  0:07 UTC (permalink / raw)
  To: git; +Cc: Linus Torvalds, Junio C Hamano

If you say

  git --git-dir=/some//path --work-tree=/some/ add <somefile>

then setup_work_tree() will call into make_relative_path() with
abs="/some//path" and base="/some".  (Note how the latter has already
lost its trailing slash.  One unfortunate user managed to trigger this
because his $HOME ended in a slash.)

This means that when checking whether 'abs' is a path under 'base', we
need to skip *two* slashes where the previous code only accounted for
one.  Fix it to handle an arbitrary number of slashes at that
position.

Noticed-by: eldenz on freenode
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
 path.c              |    6 +++---
 t/t1501-worktree.sh |    6 ++++++
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/path.c b/path.c
index 2ec950b..a195bab 100644
--- a/path.c
+++ b/path.c
@@ -400,10 +400,10 @@ int set_shared_perm(const char *path, int mode)
 	baselen = strlen(base);
 	if (prefixcmp(abs, base))
 		return abs;
-	if (abs[baselen] == '/')
-		baselen++;
-	else if (base[baselen - 1] != '/')
+	if (abs[baselen] != '/' && base[baselen - 1] != '/')
 		return abs;
+	while (abs[baselen] == '/')
+		baselen++;
 	strcpy(buf, abs + baselen);
 	return buf;
 }
diff --git a/t/t1501-worktree.sh b/t/t1501-worktree.sh
index 74e6443..9df3012 100755
--- a/t/t1501-worktree.sh
+++ b/t/t1501-worktree.sh
@@ -189,4 +189,10 @@ test_expect_success 'absolute pathspec should fail gracefully' '
 	)
 '
 
+test_expect_success 'make_relative_path handles double slashes in GIT_DIR' '
+	: > dummy_file
+	echo git --git-dir="$(pwd)//repo.git" --work-tree="$(pwd)" add dummy_file &&
+	git --git-dir="$(pwd)//repo.git" --work-tree="$(pwd)" add dummy_file
+'
+
 test_done
-- 
1.6.6.1.532.g594fe

^ permalink raw reply related	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2010-01-25  1:07 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-22  0:07 [PATCH] Handle double slashes in make_relative_path() Thomas Rast
2010-01-22  1:40 ` Junio C Hamano
2010-01-22  3:05   ` Junio C Hamano
2010-01-22  8:36     ` Johannes Sixt
2010-01-23 11:40       ` Robin Rosenberg
2010-01-23 13:09         ` Johannes Sixt
2010-01-23 13:48           ` Robin Rosenberg
2010-01-23 19:00             ` Johannes Sixt
2010-01-23 20:04           ` Junio C Hamano
2010-01-23 20:14             ` Junio C Hamano
2010-01-23 20:41               ` Johannes Sixt
2010-01-23 21:01                 ` Sverre Rabbelier
2010-01-24 13:57                   ` Thomas Rast
2010-01-24 19:04                     ` Bernhard R. Link
2010-01-24 20:05                       ` Junio C Hamano
2010-01-24 16:44                 ` Johannes Sixt
2010-01-24 18:31                   ` Junio C Hamano
2010-01-25  1:06                     ` Robin Rosenberg
2010-01-22 21:11   ` Thomas Rast
2010-01-22 23:35     ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).