[PATCH 1/2] setup.c: Fix prefix_pathspec from looping pass end of string
- From
Andrew Wong <andrew.kw.w@gmail.com>
- Date
- Mar 9, 2013, 23:45 UTC
- Message-ID
- <1362872760-25803-1-git-send-email-andrew.kw.w@gmail.com>
- In-Reply-To
- <7vk3pik6aq.fsf@alter.siamese.dyndns.org>
The previous code was assuming length ends at either ")" or ",", and was not handling the case where strcspn returns length due to end of string. So specifying ":(top" as pathspec will cause the loop to go pass the end of string.
Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com> --- setup.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/setup.c b/setup.c index 1dee47e..f4c4e73 100644 --- a/setup.c +++ b/setup.c @@ -207,9 +207,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] == ')') + if (copyfrom[len] == '\0') nextat = copyfrom + len; - else + else if (copyfrom[len] == ')') + nextat = copyfrom + len; + else if (copyfrom[len] == ',') nextat = copyfrom + len + 1; if (!len) continue;
-- 1.7.12.4