authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2026-10-09 19:20:27-07:00
committergravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2026-10-09 22:32:38-07:00
log61656d0e0e8ec894d72232c21c5933d396ef8501
tree3f216429001582e5964ee85091602d8472ff2efe
parent6b2ac8fa5cc645b2655a4a5f99d6d808bee4da28

Threaded.windowsCreatePipe: Set READ_ATTRIBUTES flags

Without this, the child trying to read the attributes of the stdout/stderr/stdin file (NtQueryInformationFile, NtQueryVolumeInformationFile, etc) would get ACCESS_DENIED. It's not strictly necessary on the server side of the pipe but I don't see a reason not to set it there, too.

1 files changed, 2 insertions(+), 0 deletions(-)

lib/std/Io/Threaded.zig+2
...@@ -17818,6 +17818,7 @@ pub fn windowsCreatePipe(t: *Threaded, options: CreatePipeOptions) ![2]windows.H...@@ -17818,6 +17818,7 @@ pub fn windowsCreatePipe(t: *Threaded, options: CreatePipeOptions) ![2]windows.H
17818 .READ_DATA = options.inbound,17818 .READ_DATA = options.inbound,
17819 .WRITE_DATA = options.outbound,17819 .WRITE_DATA = options.outbound,
17820 .WRITE_ATTRIBUTES = true,17820 .WRITE_ATTRIBUTES = true,
17821 .READ_ATTRIBUTES = true,
17821 } },17822 } },
17822 .STANDARD = .{ .SYNCHRONIZE = true },17823 .STANDARD = .{ .SYNCHRONIZE = true },
17823 },17824 },
...@@ -17860,6 +17861,7 @@ pub fn windowsCreatePipe(t: *Threaded, options: CreatePipeOptions) ![2]windows.H...@@ -17860,6 +17861,7 @@ pub fn windowsCreatePipe(t: *Threaded, options: CreatePipeOptions) ![2]windows.H
17860 .READ_DATA = options.outbound,17861 .READ_DATA = options.outbound,
17861 .WRITE_DATA = options.inbound,17862 .WRITE_DATA = options.inbound,
17862 .WRITE_ATTRIBUTES = true,17863 .WRITE_ATTRIBUTES = true,
17864 .READ_ATTRIBUTES = true,
17863 } },17865 } },
17864 .STANDARD = .{ .SYNCHRONIZE = true },17866 .STANDARD = .{ .SYNCHRONIZE = true },
17865 },17867 },