| ... | ... | @@ -1740,7 +1740,7 @@ pub fn openatWasi( |
| 1740 | 1740 | .NOMEM => return error.SystemResources, |
| 1741 | 1741 | .NOSPC => return error.NoSpaceLeft, |
| 1742 | 1742 | .NOTDIR => return error.NotDir, |
| 1743 | | .PERM => return error.AccessDenied, |
| 1743 | .PERM => return error.PermissionDenied, |
| 1744 | 1744 | .EXIST => return error.PathAlreadyExists, |
| 1745 | 1745 | .BUSY => return error.DeviceBusy, |
| 1746 | 1746 | .NOTCAPABLE => return error.AccessDenied, |
| ... | ... | @@ -2178,7 +2178,7 @@ pub fn symlinkatWasi(target_path: []const u8, newdirfd: fd_t, sym_link_path: []c |
| 2178 | 2178 | .INVAL => unreachable, |
| 2179 | 2179 | .BADF => unreachable, |
| 2180 | 2180 | .ACCES => return error.AccessDenied, |
| 2181 | | .PERM => return error.AccessDenied, |
| 2181 | .PERM => return error.PermissionDenied, |
| 2182 | 2182 | .DQUOT => return error.DiskQuota, |
| 2183 | 2183 | .EXIST => return error.PathAlreadyExists, |
| 2184 | 2184 | .IO => return error.FileSystem, |
| ... | ... | @@ -2502,7 +2502,7 @@ pub fn unlinkatWasi(dirfd: fd_t, file_path: []const u8, flags: u32) UnlinkatErro |
| 2502 | 2502 | switch (res) { |
| 2503 | 2503 | .SUCCESS => return, |
| 2504 | 2504 | .ACCES => return error.AccessDenied, |
| 2505 | | .PERM => return error.AccessDenied, |
| 2505 | .PERM => return error.PermissionDenied, |
| 2506 | 2506 | .BUSY => return error.FileBusy, |
| 2507 | 2507 | .FAULT => unreachable, |
| 2508 | 2508 | .IO => return error.FileSystem, |
| ... | ... | @@ -2698,7 +2698,7 @@ fn renameatWasi(old: RelativePathWasi, new: RelativePathWasi) RenameError!void { |
| 2698 | 2698 | switch (wasi.path_rename(old.dir_fd, old.relative_path.ptr, old.relative_path.len, new.dir_fd, new.relative_path.ptr, new.relative_path.len)) { |
| 2699 | 2699 | .SUCCESS => return, |
| 2700 | 2700 | .ACCES => return error.AccessDenied, |
| 2701 | | .PERM => return error.AccessDenied, |
| 2701 | .PERM => return error.PermissionDenied, |
| 2702 | 2702 | .BUSY => return error.FileBusy, |
| 2703 | 2703 | .DQUOT => return error.DiskQuota, |
| 2704 | 2704 | .FAULT => unreachable, |
| ... | ... | @@ -2903,7 +2903,7 @@ pub fn mkdiratWasi(dir_fd: fd_t, sub_dir_path: []const u8, mode: mode_t) MakeDir |
| 2903 | 2903 | .SUCCESS => return, |
| 2904 | 2904 | .ACCES => return error.AccessDenied, |
| 2905 | 2905 | .BADF => unreachable, |
| 2906 | | .PERM => return error.AccessDenied, |
| 2906 | .PERM => return error.PermissionDenied, |
| 2907 | 2907 | .DQUOT => return error.DiskQuota, |
| 2908 | 2908 | .EXIST => return error.PathAlreadyExists, |
| 2909 | 2909 | .FAULT => unreachable, |
| ... | ... | @@ -4952,19 +4952,14 @@ pub fn faccessat(dirfd: fd_t, path: []const u8, mode: u32, flags: u32) AccessErr |
| 4952 | 4952 | } else if (native_os == .wasi and !builtin.link_libc) { |
| 4953 | 4953 | const resolved: RelativePathWasi = .{ .dir_fd = dirfd, .relative_path = path }; |
| 4954 | 4954 | |
| 4955 | | const st = blk: { |
| 4956 | | break :blk std.os.fstatat_wasi(dirfd, path, .{ |
| 4957 | | .SYMLINK_FOLLOW = (flags & AT.SYMLINK_NOFOLLOW) == 0, |
| 4958 | | }); |
| 4959 | | } catch |err| switch (err) { |
| 4960 | | error.AccessDenied => return error.PermissionDenied, |
| 4961 | | else => |e| return e, |
| 4962 | | }; |
| 4955 | const st = try std.os.fstatat_wasi(dirfd, path, .{ |
| 4956 | .SYMLINK_FOLLOW = (flags & AT.SYMLINK_NOFOLLOW) == 0, |
| 4957 | }); |
| 4963 | 4958 | |
| 4964 | 4959 | if (mode != F_OK) { |
| 4965 | 4960 | var directory: wasi.fdstat_t = undefined; |
| 4966 | 4961 | if (wasi.fd_fdstat_get(resolved.dir_fd, &directory) != .SUCCESS) { |
| 4967 | | return error.PermissionDenied; |
| 4962 | return error.AccessDenied; |
| 4968 | 4963 | } |
| 4969 | 4964 | |
| 4970 | 4965 | var rights: wasi.rights_t = .{}; |
| ... | ... | @@ -4984,7 +4979,7 @@ pub fn faccessat(dirfd: fd_t, path: []const u8, mode: u32, flags: u32) AccessErr |
| 4984 | 4979 | const rights_int: u64 = @bitCast(rights); |
| 4985 | 4980 | const inheriting_int: u64 = @bitCast(directory.fs_rights_inheriting); |
| 4986 | 4981 | if ((rights_int & inheriting_int) != rights_int) { |
| 4987 | | return error.PermissionDenied; |
| 4982 | return error.AccessDenied; |
| 4988 | 4983 | } |
| 4989 | 4984 | } |
| 4990 | 4985 | return; |