diff options
| author | Jack O'Connor <oconnor663@gmail.com> | 2019-10-11 14:23:25 -0400 |
|---|---|---|
| committer | Jack O'Connor <oconnor663@gmail.com> | 2019-10-11 14:23:25 -0400 |
| commit | 93ae6924af65f38b4998199c0da5ad75acde4466 (patch) | |
| tree | 5eb51a994592278c9b90fa7093f83aa77167b749 | |
| parent | d4f7f974b83ce6795f29de13063132b4e211583d (diff) | |
| download | rust-93ae6924af65f38b4998199c0da5ad75acde4466.tar.gz rust-93ae6924af65f38b4998199c0da5ad75acde4466.zip | |
make File::try_clone produce non-inheritable handles on Windows
File handles shouldn't be inheritable in general. `std::process::Command` takes care of making them inheritable when child processes are spawned, and the `CREATE_PROCESS_LOCK` protects against races in that section on Windows. But `File::try_clone` has been creating inheritable file descriptors outside of that lock, which could be leaking into other child processes unintentionally. See also https://github.com/rust-lang/rust/pull/31069#discussion_r334117665.
| -rw-r--r-- | src/libstd/sys/windows/fs.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libstd/sys/windows/fs.rs b/src/libstd/sys/windows/fs.rs index 204f6af5fc1..4160123c9a2 100644 --- a/src/libstd/sys/windows/fs.rs +++ b/src/libstd/sys/windows/fs.rs @@ -412,7 +412,7 @@ impl File { pub fn duplicate(&self) -> io::Result<File> { Ok(File { - handle: self.handle.duplicate(0, true, c::DUPLICATE_SAME_ACCESS)?, + handle: self.handle.duplicate(0, false, c::DUPLICATE_SAME_ACCESS)?, }) } |
