Andrew Wong <andrew.k...@gmail.com> writes:

> 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.

Thanks.

The parser that goes past the end of the string may be a bug worth
fixing, but is this patch sufficient to diagnose such an input as an
error?




> Signed-off-by: Andrew Wong <andrew.k...@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;
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to