summaryrefslogtreecommitdiff
path: root/setup.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-03-07 07:18:08 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-03-07 08:14:42 (GMT)
commit3296766eb5531ef051ae392114de5d75556f5613 (patch)
treea5a5dd6fd3c83e41fa62e737475573c599da6de4 /setup.c
parentb9217642ef2db34e2cbeaef8d4439b07a03027cd (diff)
downloadgit-3296766eb5531ef051ae392114de5d75556f5613.zip
git-3296766eb5531ef051ae392114de5d75556f5613.tar.gz
git-3296766eb5531ef051ae392114de5d75556f5613.tar.bz2
get_pathspec(): die when an out-of-tree path is given
An earlier commit d089ebaa (setup: sanitize absolute and funny paths) made get_pathspec() aware of absolute paths, but with a botched interface that forced the callers to count the resulting pathspecs in order to detect an error of giving a path that is outside the work tree. This fixes it, by dying inside the function. We had ls-tree test that relied on a misfeature in the original implementation of its pathspec handling. Leading slashes were silently removed from them. However we allow giving absolute pathnames (people want to cut and paste from elsewhere) that are inside work tree these days, so a pathspec that begin with slash _should_ be treated as a full path. The test is adjusted to match the updated rule for get_pathspec(). Earlier I mistook three tests given by Robin that they should succeed, but these are attempts to add path outside work tree, which should fail loudly. These tests also have been fixed. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'setup.c')
-rw-r--r--setup.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/setup.c b/setup.c
index 89c81e5..41e298b 100644
--- a/setup.c
+++ b/setup.c
@@ -202,6 +202,8 @@ const char **get_pathspec(const char *prefix, const char **pathspec)
const char *p = prefix_path(prefix, prefixlen, *src);
if (p)
*(dst++) = p;
+ else
+ exit(128); /* error message already given */
src++;
}
*dst = NULL;