From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2181) id BECBD3858416; Tue, 6 Jun 2023 13:34:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BECBD3858416 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1686058460; bh=BPqKAxpsDDDxtoPPmAtYyNF7+aESc0S2+jSd13k8U9Y=; h=From:To:Subject:Date:From; b=ImYInZ5ZcyOxqxRXu/fuSd3gsAv2yu5cI8Q1OGfVaf2CGpZ0bi98fRpbptKlp4kVE GukQjRUx4kbk8KsJJcwuP6xHT7vvYyvLYXWYZdBCD5SUPwiFxTK9I50Zvqye2u5O5e ohB6Y9VMJ9s0Uc29b9E0Wi9Pul2jpUdqElV0C0Ok= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jonathan Wakely To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r13-7419] libstdc++: Use close-on-exec for file descriptors in filesystem::copy_file X-Act-Checkin: gcc X-Git-Author: Jonathan Wakely X-Git-Refname: refs/heads/releases/gcc-13 X-Git-Oldrev: 32f2b0f32816af816605dbe8060fb903cf7d5603 X-Git-Newrev: bae27ba9dedc521b8bb093347ef84bb35701518d Message-Id: <20230606133420.BECBD3858416@sourceware.org> Date: Tue, 6 Jun 2023 13:34:20 +0000 (GMT) List-Id: https://gcc.gnu.org/g:bae27ba9dedc521b8bb093347ef84bb35701518d commit r13-7419-gbae27ba9dedc521b8bb093347ef84bb35701518d Author: Jonathan Wakely Date: Mon Jun 5 17:45:37 2023 +0100 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. (cherry picked from commit 7e8e071c4b64f1b6ea5ddf528724fc793a0f0e36) Diff: --- libstdc++-v3/src/filesystem/ops-common.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libstdc++-v3/src/filesystem/ops-common.h b/libstdc++-v3/src/filesystem/ops-common.h index c95511b5c95..35aebff48c1 100644 --- a/libstdc++-v3/src/filesystem/ops-common.h +++ b/libstdc++-v3/src/filesystem/ops-common.h @@ -457,25 +457,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) {