Skip to content

Commit 084c2cd

Browse files
authored
windows: use permissive file share flags everywhere (#19505)
* use permissive file share flags everywhere * remove file_share_delete from createnamedpipefile
1 parent 8f6b1f2 commit 084c2cd

File tree

5 files changed

+9
-9
lines changed

5 files changed

+9
-9
lines changed

lib/std/child_process.zig

+1-1
Original file line numberDiff line numberDiff line change
@@ -697,7 +697,7 @@ pub const ChildProcess = struct {
697697
// "\Device\Null" or "\??\NUL"
698698
windows.OpenFile(&[_]u16{ '\\', 'D', 'e', 'v', 'i', 'c', 'e', '\\', 'N', 'u', 'l', 'l' }, .{
699699
.access_mask = windows.GENERIC_READ | windows.GENERIC_WRITE | windows.SYNCHRONIZE,
700-
.share_access = windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE,
700+
.share_access = windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE | windows.FILE_SHARE_DELETE,
701701
.sa = &saAttr,
702702
.creation = windows.OPEN_EXISTING,
703703
}) catch |err| switch (err) {

lib/std/fs/Dir.zig

+2-2
Original file line numberDiff line numberDiff line change
@@ -1325,7 +1325,7 @@ pub fn realpathW(self: Dir, pathname: []const u16, out_buffer: []u8) RealPathErr
13251325
const w = windows;
13261326

13271327
const access_mask = w.GENERIC_READ | w.SYNCHRONIZE;
1328-
const share_access = w.FILE_SHARE_READ;
1328+
const share_access = w.FILE_SHARE_READ | w.FILE_SHARE_WRITE | w.FILE_SHARE_DELETE;
13291329
const creation = w.FILE_OPEN;
13301330
const h_file = blk: {
13311331
const res = w.OpenFile(pathname, .{
@@ -1598,7 +1598,7 @@ fn makeOpenDirAccessMaskW(self: Dir, sub_path_w: [*:0]const u16, access_mask: u3
15981598
&io,
15991599
null,
16001600
w.FILE_ATTRIBUTE_NORMAL,
1601-
w.FILE_SHARE_READ | w.FILE_SHARE_WRITE,
1601+
w.FILE_SHARE_READ | w.FILE_SHARE_WRITE | w.FILE_SHARE_DELETE,
16021602
flags.create_disposition,
16031603
w.FILE_DIRECTORY_FILE | w.FILE_SYNCHRONOUS_IO_NONALERT | w.FILE_OPEN_FOR_BACKUP_INTENT | open_reparse_point,
16041604
null,

lib/std/fs/test.zig

+1-1
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ test "File.stat on a File that is a symlink returns Kind.sym_link" {
262262
&io,
263263
null,
264264
windows.FILE_ATTRIBUTE_NORMAL,
265-
windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE,
265+
windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE | windows.FILE_SHARE_DELETE,
266266
windows.FILE_OPEN,
267267
// FILE_OPEN_REPARSE_POINT is the important thing here
268268
windows.FILE_OPEN_REPARSE_POINT | windows.FILE_DIRECTORY_FILE | windows.FILE_SYNCHRONOUS_IO_NONALERT | windows.FILE_OPEN_FOR_BACKUP_INTENT,

lib/std/os/windows.zig

+4-4
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ pub fn CreatePipe(rd: *HANDLE, wr: *HANDLE, sattr: *const SECURITY_ATTRIBUTES) C
217217
&iosb,
218218
null,
219219
0,
220-
FILE_SHARE_READ | FILE_SHARE_WRITE,
220+
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
221221
FILE_OPEN,
222222
FILE_SYNCHRONOUS_IO_NONALERT,
223223
null,
@@ -283,7 +283,7 @@ pub fn CreatePipe(rd: *HANDLE, wr: *HANDLE, sattr: *const SECURITY_ATTRIBUTES) C
283283
&iosb,
284284
null,
285285
0,
286-
FILE_SHARE_READ | FILE_SHARE_WRITE,
286+
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
287287
FILE_OPEN,
288288
FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE,
289289
null,
@@ -892,7 +892,7 @@ pub fn ReadLink(dir: ?HANDLE, sub_path_w: []const u16, out_buffer: []u8) ReadLin
892892
&io,
893893
null,
894894
FILE_ATTRIBUTE_NORMAL,
895-
FILE_SHARE_READ,
895+
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
896896
FILE_OPEN,
897897
FILE_OPEN_REPARSE_POINT | FILE_SYNCHRONOUS_IO_NONALERT,
898898
null,
@@ -1311,7 +1311,7 @@ pub fn GetFinalPathNameByHandle(
13111311
const mgmt_path_u16 = std.unicode.utf8ToUtf16LeStringLiteral("\\??\\MountPointManager");
13121312
const mgmt_handle = OpenFile(mgmt_path_u16, .{
13131313
.access_mask = SYNCHRONIZE,
1314-
.share_access = FILE_SHARE_READ | FILE_SHARE_WRITE,
1314+
.share_access = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
13151315
.creation = FILE_OPEN,
13161316
}) catch |err| switch (err) {
13171317
error.IsDir => return error.Unexpected,

lib/std/posix.zig

+1-1
Original file line numberDiff line numberDiff line change
@@ -5403,7 +5403,7 @@ pub fn realpathW(pathname: []const u16, out_buffer: *[max_path_bytes]u8) RealPat
54035403

54045404
const dir = fs.cwd().fd;
54055405
const access_mask = w.GENERIC_READ | w.SYNCHRONIZE;
5406-
const share_access = w.FILE_SHARE_READ;
5406+
const share_access = w.FILE_SHARE_READ | w.FILE_SHARE_WRITE | w.FILE_SHARE_DELETE;
54075407
const creation = w.FILE_OPEN;
54085408
const h_file = blk: {
54095409
const res = w.OpenFile(pathname, .{

0 commit comments

Comments
 (0)