[PATCH 0/2] fix find_execable function and which code cleanup
Denys Vlasenko
vda.linux at googlemail.com
Fri May 2 15:09:28 UTC 2014
On Fri, May 2, 2014 at 11:19 AM, Ralf Friedl <Ralf.Friedl at online.de> wrote:
> I don't know exactly what you did, but for me it works:
> $ git diff
> diff --git a/libbb/execable.c b/libbb/execable.c
> index 178a00a..41540dc 100644
> --- a/libbb/execable.c
> +++ b/libbb/execable.c
> @@ -37,6 +37,8 @@ char* FAST_FUNC find_execable(const char *filename, char
> **PATHp)
>
> n = strchr(p, ':');
> if (n)
> *n++ = '\0';
> + if (*p == '\0')
> + p = ".";
> if (*p != '\0') { /* it's not a PATH="foo::bar" situation */
> p = concat_path_file(p, filename);
> if (execable_file(p)) {
> $ PATH=:/bin::/usr/bin: ./busybox which -a busybox
> ./busybox
> ./busybox
> ./busybox
>
> To avoid a warning about "." being const, it should be written as
> --- a/libbb/execable.c
> +++ b/libbb/execable.c
> @@ -37,14 +37,12 @@ char* FAST_FUNC find_execable(const char *filename, char
> **PATHp)
>
> n = strchr(p, ':');
> if (n)
> *n++ = '\0';
> - if (*p != '\0') { /* it's not a PATH="foo::bar" situation */
> - p = concat_path_file(p, filename);
> + p = concat_path_file(*p ? p : ".", filename);
> if (execable_file(p)) {
> *PATHp = n;
> return p;
> }
> free(p);
> - }
> p = n;
> } /* on loop exit p == NULL */
> return p;
Applied, thanks!
More information about the busybox
mailing list