]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fs-util: Strip O_NOFOLLOW in xopenat() when calling fd_reopen()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 24 Mar 2023 19:48:23 +0000 (20:48 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 30 Mar 2023 07:04:14 +0000 (09:04 +0200)
We definitely want to follow symlinks when calling fd_reopen() so
let's strip O_NOFOLLOW when we call it from xopenat().

src/basic/fs-util.c

index 257c11ad715fc063926aff5a7e046ddc4fc1da9c..cb323a64031f7f2c4fe1864457d8317bb8dae00b 100644 (file)
@@ -1106,7 +1106,7 @@ int xopenat(int dir_fd, const char *path, int flags, mode_t mode) {
 
         if (isempty(path)) {
                 assert(!FLAGS_SET(flags, O_CREAT|O_EXCL));
-                return fd_reopen(dir_fd, flags);
+                return fd_reopen(dir_fd, flags & ~O_NOFOLLOW);
         }
 
         if (FLAGS_SET(flags, O_DIRECTORY|O_CREAT)) {