mirror of
https://github.com/git/git.git
synced 2024-11-11 04:19:47 +01:00
remove_leading_path: use a strbuf for internal storage
This function strcpy's directly into a PATH_MAX-sized buffer. There's only one caller, which feeds the git_dir into it, so it's not easy to trigger in practice (even if you fed a large $GIT_DIR through the environment or .git file, it would have to actually exist and be accessible on the filesystem to get to this point). We can fix it by moving to a strbuf. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e9ba678175
commit
4635768809
10
path.c
10
path.c
@ -632,7 +632,7 @@ const char *relative_path(const char *in, const char *prefix,
|
||||
*/
|
||||
const char *remove_leading_path(const char *in, const char *prefix)
|
||||
{
|
||||
static char buf[PATH_MAX + 1];
|
||||
static struct strbuf buf = STRBUF_INIT;
|
||||
int i = 0, j = 0;
|
||||
|
||||
if (!prefix || !prefix[0])
|
||||
@ -661,11 +661,13 @@ const char *remove_leading_path(const char *in, const char *prefix)
|
||||
return in;
|
||||
while (is_dir_sep(in[j]))
|
||||
j++;
|
||||
|
||||
strbuf_reset(&buf);
|
||||
if (!in[j])
|
||||
strcpy(buf, ".");
|
||||
strbuf_addstr(&buf, ".");
|
||||
else
|
||||
strcpy(buf, in + j);
|
||||
return buf;
|
||||
strbuf_addstr(&buf, in + j);
|
||||
return buf.buf;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user