On Tue, Jul 02, 2024 at 07:30:58PM +0200, Michal Sekletar wrote:
[...]
> +int
> +dwfl_set_sysroot (Dwfl *dwfl, const char *sysroot)
> +{
> +  if (!sysroot)
> +    {
> +      free (dwfl->sysroot);
> +      dwfl->sysroot = NULL;
> +      return 0;
> +    }
> +
> +  char *r, *s;
> +  r = realpath (sysroot, NULL);
> +  if (!r)
> +    return -1;
> +
> +  int rc;
> +  struct stat sb;
> +
> +  rc = stat (r, &sb);
> +  if (rc < 0 || !S_ISDIR (sb.st_mode))
> +    {
> +      errno = EINVAL;
> +      return -1;
> +    }
> +
> +  rc = asprintf (&s, "%s/", r);

There is a case when realpath() returns a path ending with '/':
when the path is "/".  I'm mentioning this just in case, not sure whether
sysroot == "/" makes any sense at all, and whether this needs a special
attention.


-- 
ldv

Reply via email to