main()1 fn main() {
2 #[link(wasm_import_module = "wasi_snapshot_preview1")]
3 unsafe extern "C" {
4 #[cfg_attr(target_arch = "wasm32", link_name = "adapter_open_badfd")]
5 fn adapter_open_badfd(fd: *mut u32) -> wasip1::Errno;
6
7 #[cfg_attr(target_arch = "wasm32", link_name = "adapter_close_badfd")]
8 fn adapter_close_badfd(fd: u32) -> wasip1::Errno;
9 }
10
11 unsafe {
12 let mut fd = 0;
13 assert_eq!(adapter_open_badfd(&mut fd), wasip1::ERRNO_SUCCESS);
14
15 assert_eq!(wasip1::fd_close(fd), Err(wasip1::ERRNO_BADF));
16
17 assert_eq!(wasip1::fd_fdstat_get(fd).map(drop), Err(wasip1::ERRNO_BADF));
18
19 assert_eq!(
20 wasip1::fd_fdstat_set_rights(fd, 0, 0),
21 Err(wasip1::ERRNO_BADF)
22 );
23
24 let mut buffer = [0_u8; 1];
25 assert_eq!(
26 wasip1::fd_read(
27 fd,
28 &[wasip1::Iovec {
29 buf: buffer.as_mut_ptr(),
30 buf_len: 1
31 }]
32 ),
33 Err(wasip1::ERRNO_BADF)
34 );
35
36 assert_eq!(
37 wasip1::fd_write(
38 fd,
39 &[wasip1::Ciovec {
40 buf: buffer.as_ptr(),
41 buf_len: 1
42 }]
43 ),
44 Err(wasip1::ERRNO_BADF)
45 );
46
47 assert_eq!(adapter_close_badfd(fd), wasip1::ERRNO_SUCCESS);
48 }
49 }
50