dangling_fd test: open with either READ or CREAT|WRITE
neither READ nor WRITE is an error
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user