fs-util: if /proc/ is mounted, return -EBADF when appropriate for link_fd()

This commit is contained in:
Mike Yuan
2024-05-22 00:50:44 +08:00
parent d19b3c5d99
commit 94d94f0c0a
+5 -2
View File
@@ -1242,7 +1242,7 @@ int xopenat_lock_full(
}
int link_fd(int fd, int newdirfd, const char *newpath) {
int r;
int r, k;
assert(fd >= 0);
assert(newdirfd >= 0 || newdirfd == AT_FDCWD);
@@ -1255,8 +1255,11 @@ int link_fd(int fd, int newdirfd, const char *newpath) {
/* Fall back to symlinking via AT_EMPTY_PATH as fallback (this requires CAP_DAC_READ_SEARCH and a
* more recent kernel, but does not require /proc/ mounted) */
if (proc_mounted() != 0)
k = proc_mounted();
if (k < 0)
return r;
if (k > 0)
return -EBADF;
return RET_NERRNO(linkat(fd, "", newdirfd, newpath, AT_EMPTY_PATH));
}