authorgravatar for phatchman@users.noreply.github.comphatchman <phatchman@users.noreply.github.com> 2025-04-16 07:39:44+10:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-04-16 04:25:02+02:00
log4b47e978e39311c5d8ce86256c2cc6b480af53ff
treec4fef4685cb741a3c4c34edb51372e4e1491bc5d
parentd80cfa6f41b358440cc0ed021deaa01583a035d7
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

Return FileNotFound when CreateProcessW is called with a missing path (#23567)


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

lib/std/os/windows.zig+1
......@@ -1913,6 +1913,7 @@ pub fn CreateProcessW(
19131913 switch (GetLastError()) {
19141914 .FILE_NOT_FOUND => return error.FileNotFound,
19151915 .PATH_NOT_FOUND => return error.FileNotFound,
1916 .DIRECTORY => return error.FileNotFound,
19161917 .ACCESS_DENIED => return error.AccessDenied,
19171918 .INVALID_PARAMETER => unreachable,
19181919 .INVALID_NAME => return error.InvalidName,
test/standalone/windows_spawn/main.zig+2
......@@ -51,6 +51,8 @@ pub fn main() anyerror!void {
5151 try testExec(allocator, "HeLLo.exe", "hello from exe\n");
5252 // without extension should find the .exe (case insensitive)
5353 try testExec(allocator, "heLLo", "hello from exe\n");
54 // with invalid cwd
55 try std.testing.expectError(error.FileNotFound, testExecWithCwd(allocator, "hello.exe", "missing_dir", ""));
5456
5557 // now add a .bat
5658 try tmp.dir.writeFile(.{ .sub_path = "hello.bat", .data = "@echo hello from bat" });