about summary refs log tree commit diff
path: root/library/std/src/sys
diff options
context:
space:
mode:
authorDylan DPC <99973273+Dylan-DPC@users.noreply.github.com>2023-02-11 11:15:58 +0530
committerGitHub <noreply@github.com>2023-02-11 11:15:58 +0530
commita50c379fcd8d0a4a9bc5ee1a837c299d3e5206f8 (patch)
treecf57321b09a0f555d2f3beb9aa0fbf62e5138951 /library/std/src/sys
parent745361d17d348013a554c5019b4d0c5cf17aa1de (diff)
parent59b11e8fa39090f555b8d91eb0c359ad0adaabc4 (diff)
downloadrust-a50c379fcd8d0a4a9bc5ee1a837c299d3e5206f8.tar.gz
rust-a50c379fcd8d0a4a9bc5ee1a837c299d3e5206f8.zip
Rollup merge of #107900 - ChrisDenton:zero-header, r=thomcc
Zero the `REPARSE_MOUNTPOINT_DATA_BUFFER` header

Makes sure the full header is correctly initialized.

Fixes #107884
Diffstat (limited to 'library/std/src/sys')
-rw-r--r--library/std/src/sys/windows/fs.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/library/std/src/sys/windows/fs.rs b/library/std/src/sys/windows/fs.rs
index 37809803828..f1a784b5fd2 100644
--- a/library/std/src/sys/windows/fs.rs
+++ b/library/std/src/sys/windows/fs.rs
@@ -1393,6 +1393,8 @@ fn symlink_junction_inner(original: &Path, junction: &Path) -> io::Result<()> {
         let mut data = Align8([MaybeUninit::<u8>::uninit(); c::MAXIMUM_REPARSE_DATA_BUFFER_SIZE]);
         let data_ptr = data.0.as_mut_ptr();
         let db = data_ptr.cast::<c::REPARSE_MOUNTPOINT_DATA_BUFFER>();
+        // Zero the header to ensure it's fully initialized, including reserved parameters.
+        *db = mem::zeroed();
         let buf = ptr::addr_of_mut!((*db).ReparseTarget).cast::<c::WCHAR>();
         let mut i = 0;
         // FIXME: this conversion is very hacky