dangling_fd test: open with either READ or CREAT|WRITE

neither READ nor WRITE is an error
This commit is contained in:
Pat Hickey
2020-12-16 15:16:14 -08:00
parent 27ddbda829
commit 789eec3827

View File

@@ -5,16 +5,35 @@ use wasi_tests::open_scratch_directory;
unsafe fn test_dangling_fd(dir_fd: wasi::Fd) { unsafe fn test_dangling_fd(dir_fd: wasi::Fd) {
// Create a file, open it, delete it without closing the handle, // Create a file, open it, delete it without closing the handle,
// and then try creating it again // and then try creating it again
let fd = wasi::path_open(dir_fd, 0, "file", wasi::OFLAGS_CREAT, 0, 0, 0).unwrap(); let fd = wasi::path_open(
dir_fd,
0,
"file",
wasi::OFLAGS_CREAT,
wasi::RIGHTS_FD_WRITE,
0,
0,
)
.unwrap();
wasi::fd_close(fd).unwrap(); wasi::fd_close(fd).unwrap();
let file_fd = wasi::path_open(dir_fd, 0, "file", 0, 0, 0, 0).expect("failed to open"); let file_fd =
wasi::path_open(dir_fd, 0, "file", 0, wasi::RIGHTS_FD_READ, 0, 0).expect("failed to open");
assert_gt!( assert_gt!(
file_fd, file_fd,
libc::STDERR_FILENO as wasi::Fd, libc::STDERR_FILENO as wasi::Fd,
"file descriptor range check", "file descriptor range check",
); );
wasi::path_unlink_file(dir_fd, "file").expect("failed to unlink"); wasi::path_unlink_file(dir_fd, "file").expect("failed to unlink");
let fd = wasi::path_open(dir_fd, 0, "file", wasi::OFLAGS_CREAT, 0, 0, 0).unwrap(); let fd = wasi::path_open(
dir_fd,
0,
"file",
wasi::OFLAGS_CREAT,
wasi::RIGHTS_FD_WRITE,
0,
0,
)
.unwrap();
wasi::fd_close(fd).unwrap(); wasi::fd_close(fd).unwrap();
// Now, repeat the same process but for a directory // Now, repeat the same process but for a directory