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