diff --git a/crates/test-programs/wasi-tests/src/bin/fd_readdir.rs b/crates/test-programs/wasi-tests/src/bin/fd_readdir.rs index 903329b744..f3594f939c 100644 --- a/crates/test-programs/wasi-tests/src/bin/fd_readdir.rs +++ b/crates/test-programs/wasi-tests/src/bin/fd_readdir.rs @@ -1,5 +1,5 @@ use more_asserts::assert_gt; -use std::{cmp::min, env, mem, process, slice, str}; +use std::{env, mem, process, slice, str}; use wasi_tests::open_scratch_directory; const BUF_LEN: usize = 256; @@ -58,8 +58,8 @@ unsafe fn exec_fd_readdir(fd: wasi::Fd, cookie: wasi::Dircookie) -> (Vec = ReadDir::from_slice(sl).collect(); let eof = bufused < BUF_LEN; (dirs, eof) @@ -181,7 +181,7 @@ unsafe fn test_fd_readdir_lots(dir_fd: wasi::Fd) { if eof { break; } - cookie = dirs[dirs.len()-1].dirent.d_next; + cookie = dirs[dirs.len() - 1].dirent.d_next; } assert_eq!(total, 1002, "expected 1000 entries plus . and .."); diff --git a/crates/wasi-common/src/snapshots/preview_1.rs b/crates/wasi-common/src/snapshots/preview_1.rs index ea9f90756b..dc8a6f5311 100644 --- a/crates/wasi-common/src/snapshots/preview_1.rs +++ b/crates/wasi-common/src/snapshots/preview_1.rs @@ -650,9 +650,6 @@ impl<'a> wasi_snapshot_preview1::WasiSnapshotPreview1 for WasiCtx { let dirent_len: types::Size = dirent_raw.len().try_into()?; let name_raw = name.as_bytes(); let name_len: types::Size = name_raw.len().try_into()?; - let offset = dirent_len - .checked_add(name_len) - .ok_or_else(|| Error::overflow())?; // Copy as many bytes of the dirent as we can, up to the end of the buffer let dirent_copy_len = std::cmp::min(dirent_len, buf_len - bufused); @@ -666,6 +663,7 @@ impl<'a> wasi_snapshot_preview1::WasiSnapshotPreview1 for WasiCtx { } buf = buf.add(dirent_copy_len)?; + bufused += dirent_copy_len; // Copy as many bytes of the name as we can, up to the end of the buffer let name_copy_len = std::cmp::min(name_len, buf_len - bufused); @@ -680,7 +678,7 @@ impl<'a> wasi_snapshot_preview1::WasiSnapshotPreview1 for WasiCtx { } buf = buf.add(name_copy_len)?; - bufused += offset; + bufused += name_copy_len; } Ok(bufused) }