From: Mike Yuan Date: Tue, 21 May 2024 03:05:29 +0000 (+0800) Subject: fs-util: if /proc/ is mounted, return -EBADF when appropriate for link_fd() X-Git-Tag: v257-rc1~1193^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94d94f0c0a7d28816c815dc9770cc659769fe980;p=thirdparty%2Fsystemd.git fs-util: if /proc/ is mounted, return -EBADF when appropriate for link_fd() --- 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)); }