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