about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbeetrees <b@beetr.ee>2022-09-04 10:22:36 +0100
committerbeetrees <b@beetr.ee>2022-09-04 10:22:36 +0100
commit0e0756cf0d1b55f3de4815088276a584e2c31f14 (patch)
tree201d9606326639c668cb7069c1ac620b70310b5a
parentc2d140bd36e7fcdc894b7c342fd81a63fdd66373 (diff)
downloadrust-0e0756cf0d1b55f3de4815088276a584e2c31f14.tar.gz
rust-0e0756cf0d1b55f3de4815088276a584e2c31f14.zip
Don't duplicate file descriptors into stdio fds
-rw-r--r--library/std/src/os/fd/owned.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/library/std/src/os/fd/owned.rs b/library/std/src/os/fd/owned.rs
index a463bc41db7..71e33fb9ed8 100644
--- a/library/std/src/os/fd/owned.rs
+++ b/library/std/src/os/fd/owned.rs
@@ -104,7 +104,8 @@ impl BorrowedFd<'_> {
         #[cfg(target_os = "espidf")]
         let cmd = libc::F_DUPFD;
 
-        let fd = cvt(unsafe { libc::fcntl(self.as_raw_fd(), cmd, 0) })?;
+        // Avoid using file descriptors below 3 as they are used for stdio
+        let fd = cvt(unsafe { libc::fcntl(self.as_raw_fd(), cmd, 3) })?;
         Ok(unsafe { OwnedFd::from_raw_fd(fd) })
     }