diff options
author | Andrew Wong <andrew.kw.w@gmail.com> | 2013-03-07 11:36:03 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-03-14 09:39:09 -0700 |
commit | 772e47cd673e048adb0f7b663617ec70e0cfe598 (patch) | |
tree | b759761f8c13a2e19c67d921d9bcd416f7f5feba /setup.c | |
parent | 7e2010537e96d0a1144520222f20ba1dc3d61441 (diff) | |
download | git-772e47cd673e048adb0f7b663617ec70e0cfe598.tar.gz |
setup.c: stop prefix_pathspec() from looping past the end of string
The code assumes that the string ends at either `)` or `,`, and does
not handle the case where strcspn() returns length due to end of
string. So specifying ":(top" as pathspec will cause the loop to go
past the end of string.
Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -199,10 +199,11 @@ static const char *prefix_pathspec(const char *prefix, int prefixlen, const char *copyfrom && *copyfrom != ')'; copyfrom = nextat) { size_t len = strcspn(copyfrom, ",)"); - if (copyfrom[len] == ')') - nextat = copyfrom + len; - else + if (copyfrom[len] == ',') nextat = copyfrom + len + 1; + else + /* handle ')' and '\0' */ + nextat = copyfrom + len; if (!len) continue; for (i = 0; i < ARRAY_SIZE(pathspec_magic); i++) |