]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
basic/fileio: drop O_CREAT before passing flags to fd_reopen 29939/head
authorMike Yuan <me@yhndnzj.com>
Wed, 8 Nov 2023 17:43:08 +0000 (01:43 +0800)
committerMike Yuan <me@yhndnzj.com>
Wed, 8 Nov 2023 19:38:14 +0000 (03:38 +0800)
Follow-up for 78c21009bfcf0758f9c85dc70ac896c8aab6b535

Fixes #29938

src/basic/fileio.c

index 6129461e660903f53898804c2845f97ce60835cf..a050b61db45eb58df18c0dcb0f4f81d3fd55ea0e 100644 (file)
@@ -1064,7 +1064,9 @@ int fdopen_independent(int fd, const char *mode, FILE **ret) {
         if (mode_flags < 0)
                 return mode_flags;
 
-        copy_fd = fd_reopen(fd, mode_flags);
+        /* Flags returned by fopen_mode_to_flags might contain O_CREAT, but it doesn't make sense for fd_reopen
+         * since we're working on an existing fd anyway. Let's drop it here to avoid triggering assertion. */
+        copy_fd = fd_reopen(fd, mode_flags & ~O_CREAT);
         if (copy_fd < 0)
                 return copy_fd;