From: Lennart Poettering Date: Fri, 12 Nov 2021 14:12:23 +0000 (+0100) Subject: smack make mac_smack_fix_at() useful when called with dir_fd=AT_FDCWD X-Git-Tag: v250-rc1~231^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d1cd465e21eb3fd100819378e906483dded1ce71;p=thirdparty%2Fsystemd.git smack make mac_smack_fix_at() useful when called with dir_fd=AT_FDCWD --- diff --git a/src/shared/smack-util.c b/src/shared/smack-util.c index d7fbbdc913a..b8434b068ca 100644 --- a/src/shared/smack-util.c +++ b/src/shared/smack-util.c @@ -176,7 +176,7 @@ static int smack_fix_fd(int fd, const char *abspath, LabelFixFlags flags) { return 0; } -int mac_smack_fix_at(int dirfd, const char *path, LabelFixFlags flags) { +int mac_smack_fix_at(int dir_fd, const char *path, LabelFixFlags flags) { _cleanup_free_ char *p = NULL; _cleanup_close_ int fd = -1; int r; @@ -186,7 +186,14 @@ int mac_smack_fix_at(int dirfd, const char *path, LabelFixFlags flags) { if (!mac_smack_use()) return 0; - fd = openat(dirfd, path, O_NOFOLLOW|O_CLOEXEC|O_PATH); + if (dir_fd < 0) { + if (dir_fd != AT_FDCWD) + return -EBADF; + + return mac_smack_fix(path, flags); + } + + fd = openat(dir_fd, path, O_NOFOLLOW|O_CLOEXEC|O_PATH); if (fd < 0) { if ((flags & LABEL_IGNORE_ENOENT) && errno == ENOENT) return 0;