Commit ae38fc6a50

phatchman <phatchman@users.noreply.github.com>
2025-04-15 23:39:44
Return FileNotFound when CreateProcessW is called with a missing path (#23567)
1 parent 530228d
Changed files (2)
lib
test
standalone
windows_spawn
lib/std/os/windows.zig
@@ -1980,6 +1980,7 @@ pub fn CreateProcessW(
         switch (GetLastError()) {
             .FILE_NOT_FOUND => return error.FileNotFound,
             .PATH_NOT_FOUND => return error.FileNotFound,
+            .DIRECTORY => return error.FileNotFound,
             .ACCESS_DENIED => return error.AccessDenied,
             .INVALID_PARAMETER => unreachable,
             .INVALID_NAME => return error.InvalidName,
test/standalone/windows_spawn/main.zig
@@ -51,6 +51,8 @@ pub fn main() anyerror!void {
     try testExec(allocator, "HeLLo.exe", "hello from exe\n");
     // without extension should find the .exe (case insensitive)
     try testExec(allocator, "heLLo", "hello from exe\n");
+    // with invalid cwd
+    try std.testing.expectError(error.FileNotFound, testExecWithCwd(allocator, "hello.exe", "missing_dir", ""));
 
     // now add a .bat
     try tmp.dir.writeFile(.{ .sub_path = "hello.bat", .data = "@echo hello from bat" });