On Sat, Aug 7, 2021 at 11:49 PM Kyle Evans <kev...@freebsd.org> wrote:

> On Sat, Aug 7, 2021 at 10:11 PM Richard Henderson
> <richard.hender...@linaro.org> wrote:
> >
> > On 8/7/21 11:42 AM, Warner Losh wrote:
> > > +        path = g_strdup(p);
> > > +        if (path == NULL) {
> >
> > Only returns null when the input is null, which you've already
> eliminated.
> >
> > > +static bool find_in_path(char *path, const char *filename, char
> *retpath,
> > > +                         size_t rpsize)
> > > +{
> > > +    const char *d;
> > > +
> > > +    while ((d = strsep(&path, ":")) != NULL) {
> > > +        if (*d == '\0') {
> > > +            d = ".";
> > > +        }
> > > +        if (snprintf(retpath, rpsize, "%s/%s", d, filename) >=
> (int)rpsize) {
> > > +            continue;
> > > +        }
> > > +        if (is_there((const char *)retpath)) {
> > > +            return true;
> > > +        }
> > > +    }
> > > +    return false;
> >
> > Hmm.  Fixed size retpath buffer isn't ideal.
> > Any reason not to use g_find_program_in_path?
> >
>
> g_find_program_in_path may work well here, as well...
>

Quite well:  1 file changed, 5 insertions(+), 42 deletions(-) so a nice
reduction in code when the unnecessary stuff is removed. I'll have
that in v2 of the series.

> I note that we don't search the path at all in linux-user/.
> >
>
> IIRC imgact_binmisc will have the resolved path but preserve argv as
> it should have been were it not emulated, so we have to re-evaluate
> the PATH search here because we try to be faithful to the context.
>

I just looked at the imgact_binmisc code, and that's what it does, so
that sounds reasonable to me as well.

Warner

Reply via email to