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