From 94d94f0c0a7d28816c815dc9770cc659769fe980 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Tue, 21 May 2024 11:05:29 +0800 Subject: [PATCH] fs-util: if /proc/ is mounted, return -EBADF when appropriate for link_fd() --- src/basic/fs-util.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c index 13995cf7a74..6df53cb0c4c 100644 --- a/src/basic/fs-util.c +++ b/src/basic/fs-util.c @@ -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)); } -- 2.47.3