summaryrefslogtreecommitdiff
path: root/setup.c
diff options
context:
space:
mode:
authorThomas Rast <trast@student.ethz.ch>2010-10-17 19:23:21 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-10-18 23:10:55 (GMT)
commit9e5f5d4cfea5bb7706f1f8bb07795d52d37a59fe (patch)
tree9b82c97bec2fd89fd64449af23589cd5a2b7cead /setup.c
parent352953a556e7f8d720e26a32d4aabbf823d3c4d4 (diff)
downloadgit-9e5f5d4cfea5bb7706f1f8bb07795d52d37a59fe.zip
git-9e5f5d4cfea5bb7706f1f8bb07795d52d37a59fe.tar.gz
git-9e5f5d4cfea5bb7706f1f8bb07795d52d37a59fe.tar.bz2
prefix_filename(): safely handle the case where pfx_len=0
Current prefix_filename() is proofed against the case where the prefix 'pfx' is NULL or a 0-length string, _except on Windows_. Change the behaviour to work the same on both platforms, and only check pfx_len so that callers passing a NULL prefix with a nonzero pfx_len segfault early on both. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'setup.c')
-rw-r--r--setup.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/setup.c b/setup.c
index a3b76de..346ef2e 100644
--- a/setup.c
+++ b/setup.c
@@ -46,7 +46,7 @@ const char *prefix_filename(const char *pfx, int pfx_len, const char *arg)
{
static char path[PATH_MAX];
#ifndef WIN32
- if (!pfx || !*pfx || is_absolute_path(arg))
+ if (!pfx_len || is_absolute_path(arg))
return arg;
memcpy(path, pfx, pfx_len);
strcpy(path + pfx_len, arg);
@@ -55,7 +55,7 @@ const char *prefix_filename(const char *pfx, int pfx_len, const char *arg)
/* don't add prefix to absolute paths, but still replace '\' by '/' */
if (is_absolute_path(arg))
pfx_len = 0;
- else
+ else if (pfx_len)
memcpy(path, pfx, pfx_len);
strcpy(path + pfx_len, arg);
for (p = path + pfx_len; *p; p++)