Michael Haggerty <mhag...@alum.mit.edu> writes:

> -     for (colon = ceil = prefix_list; *colon; ceil = colon+1) {
> -             for (colon = ceil; *colon && *colon != PATH_SEP; colon++);
> -             len = colon - ceil;
> +     string_list_split(&prefixes, prefix_list, PATH_SEP, -1);
> +
> +     for (i = 0; i < prefixes.nr; i++) {
> +             const char *ceil = prefixes.items[i].string;
> +             int len = strlen(ceil);
> +

Much nicer than the yucky original ;-)

>               if (len == 0 || len > PATH_MAX || !is_absolute_path(ceil))
>                       continue;
> -             strlcpy(buf, ceil, len+1);
> +             memcpy(buf, ceil, len+1);
>               if (normalize_path_copy(buf, buf) < 0)
>                       continue;

Why do you need this memcpy in the first place?  Isn't ceil already
a NUL terminated string unlike the original code that points into a
part of the prefix_list string?  IOW, why not

        normalize_path_copy(buf, ceil);

or something?

Can normalize_path_copy() overflow buf[PATH_MAX+1] here (before or
after this patch)?
--
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