diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2023-06-05 17:45:37 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2023-06-06 12:31:57 +0100 |
commit | 7e8e071c4b64f1b6ea5ddf528724fc793a0f0e36 (patch) | |
tree | 37cacbc4036902b0891f1592db285fe8e9b49097 | |
parent | 07a0e108247f23fcb919c61595adae143f1ea02a (diff) | |
download | gcc-7e8e071c4b64f1b6ea5ddf528724fc793a0f0e36.zip gcc-7e8e071c4b64f1b6ea5ddf528724fc793a0f0e36.tar.gz gcc-7e8e071c4b64f1b6ea5ddf528724fc793a0f0e36.tar.bz2 |
libstdc++: Use close-on-exec for file descriptors in filesystem::copy_file
libstdc++-v3/ChangeLog:
* src/filesystem/ops-common.h (do_copy_file) [O_CLOEXEC]: Set
close-on-exec flag on file descriptors.
-rw-r--r-- | libstdc++-v3/src/filesystem/ops-common.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/libstdc++-v3/src/filesystem/ops-common.h b/libstdc++-v3/src/filesystem/ops-common.h index 901f166..f04bbc6 100644 --- a/libstdc++-v3/src/filesystem/ops-common.h +++ b/libstdc++-v3/src/filesystem/ops-common.h @@ -515,25 +515,26 @@ _GLIBCXX_BEGIN_NAMESPACE_FILESYSTEM int fd; }; - int iflag = O_RDONLY; + int common_flags = 0; +#ifdef O_CLOEXEC + common_flags |= O_CLOEXEC; +#endif #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS - iflag |= O_BINARY; + common_flags |= O_BINARY; #endif + const int iflag = O_RDONLY | common_flags; CloseFD in = { posix::open(from, iflag) }; if (in.fd == -1) { ec.assign(errno, std::generic_category()); return false; } - int oflag = O_WRONLY|O_CREAT; + int oflag = O_WRONLY | O_CREAT | common_flags; if (options.overwrite || options.update) oflag |= O_TRUNC; else oflag |= O_EXCL; -#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS - oflag |= O_BINARY; -#endif CloseFD out = { posix::open(to, oflag, S_IWUSR) }; if (out.fd == -1) { |