authorgravatar for phatchman@users.noreply.github.comphatchman <phatchman@users.noreply.github.com> 2025-04-16 07:39:44+10:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2025-04-15 21:39:44+00:00
logae38fc6a50dfcece964d7d19d9e35ac5dc583daa
tree656410cb354dcbb40458fe64aff82e2c46675860
parent530228d9531e8d1dcf7e8ed88e68403e65bcf6bb
signaturebadge-check Signed by PGP key B5690EEEBB952194

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


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

lib/std/os/windows.zig+1
......@@ -1980,6 +1980,7 @@ pub fn CreateProcessW(
19801980 switch (GetLastError()) {
19811981 .FILE_NOT_FOUND => return error.FileNotFound,
19821982 .PATH_NOT_FOUND => return error.FileNotFound,
1983 .DIRECTORY => return error.FileNotFound,
19831984 .ACCESS_DENIED => return error.AccessDenied,
19841985 .INVALID_PARAMETER => unreachable,
19851986 .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" });