]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fd-util: O_DIRECTORY is fine in fd_verify_safe_flags() too
authorLennart Poettering <lennart@poettering.net>
Fri, 23 Feb 2024 21:46:04 +0000 (22:46 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 1 Mar 2024 21:25:42 +0000 (22:25 +0100)
src/basic/fd-util.c

index 371547facb9e692a57a756cba9132af19ec9d44c..c16a2ab658e087ad041678888c0599371d6ef193 100644 (file)
@@ -926,6 +926,8 @@ int fd_verify_safe_flags(int fd) {
          *
          * RAW_O_LARGEFILE: glibc secretly sets this and neglects to hide it from us if we call fcntl.
          *                  See comment in missing_fcntl.h for more details about this.
+         *
+         * O_DIRECTORY: this is set for directories, which are totally fine
          */
 
         assert(fd >= 0);
@@ -934,7 +936,7 @@ int fd_verify_safe_flags(int fd) {
         if (flags < 0)
                 return -errno;
 
-        unexpected_flags = flags & ~(O_ACCMODE|O_NOFOLLOW|RAW_O_LARGEFILE);
+        unexpected_flags = flags & ~(O_ACCMODE|O_NOFOLLOW|RAW_O_LARGEFILE|O_DIRECTORY);
         if (unexpected_flags != 0)
                 return log_debug_errno(SYNTHETIC_ERRNO(EREMOTEIO),
                                        "Unexpected flags set for extrinsic fd: 0%o",