1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-25 01:34:28 +03:00

basic: add fallback in chase_symlinks_and_opendir() for cases when /proc is not mounted

https://bugzilla.redhat.com/show_bug.cgi?id=2136916
This commit is contained in:
Michal Sekletar 2022-11-30 18:01:01 +01:00 committed by Zbigniew Jędrzejewski-Szmek
parent 6accdcc547
commit 3e22dfc235

View File

@ -552,14 +552,22 @@ int chase_symlinks_and_opendir(
return 0;
}
r = chase_symlinks(path, root, chase_flags, ret_path ? &p : NULL, &path_fd);
r = chase_symlinks(path, root, chase_flags, &p, &path_fd);
if (r < 0)
return r;
assert(path_fd >= 0);
d = opendir(FORMAT_PROC_FD_PATH(path_fd));
if (!d)
return -errno;
if (!d) {
/* Hmm, we have the fd already but we got ENOENT, most likely /proc is not mounted.
* Let's try opendir() again on the full path. */
if (errno == ENOENT) {
d = opendir(p);
if (!d)
return -errno;
} else
return -errno;
}
if (ret_path)
*ret_path = TAKE_PTR(p);