From: Thomas Rast Date: Sun, 17 Oct 2010 19:23:21 +0000 (+0200) Subject: prefix_filename(): safely handle the case where pfx_len=0 X-Git-Tag: v1.7.3.3~8^2~1 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=9e5f5d4cfea5bb7706f1f8bb07795d52d37a59fe;p=git.git 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 Signed-off-by: Junio C Hamano --- diff --git a/setup.c b/setup.c index a3b76de2b..346ef2eb2 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++)