# Changelog ## v0.12.1 ### Changed - [[#215](https://github.com/rust-vmm/vmm-sys-util/pull/215)]: Make `as_mut_fam_struct()` public and unsafe to let users modify fields of the header other than the length. ## v0.12.0 ### Changed - Added all features to the generated docs.rs documentation. - Fixed a bug in `serde` implementation of `FamStructWrapper` which allowed out of bounds memory access from Rust-safe code. See the related GHSA here: https://github.com/rust-vmm/vmm-sys-util/security/advisories/GHSA-875g-mfp6-g7f9 for more information. ## v0.11.2 ### Changed - [[#201](https://github.com/rust-vmm/vmm-sys-util/pull/201)] Updated `SyscallReturnCode` to accept any signed integer type. ## v0.11.1 ### Changed - [[#178](https://github.com/rust-vmm/vmm-sys-util/issues/178)]: Fixed a bug in `rand_bytes` that was triggering a panic when the number of bytes was not a multiple of 4. - [[#181](https://github.com/rust-vmm/vmm-sys-util/pull/181)]: Changed `TempFile::new_with_prefix()` on linux to use `mkstemp` to prevent name collisions. ## v0.11.0 ### Added - Added `rand_bytes` function that generates a pseudo random vector of `len` bytes. - Added implementation of `std::error::Error` for `fam::Error`. - Added derive `Eq` and `PartialEq` for error types. ### Changed - [[#161](https://github.com/rust-vmm/vmm-sys-util/issues/161)]: Updated the license to BSD-3-Clause. - Use edition 2021. - [[vm-memory#199](https://github.com/rust-vmm/vm-memory/issues/199)]: Use caret dependencies. This is the idiomatic way of specifying dependencies. With this we reduce the risk of breaking customer code when new releases of the dependencies are published. - Renamed `xor_psuedo_rng_u32` to `xor_pseudo_rng_u32` to fix a typo. - Renamed `xor_psuedo_rng_u8_alphanumerics` to `xor_pseudo_rng_u8_alphanumerics` to fix a typo. ## v0.10.0 ### Added - Added Android support by using the appropriate macro configuration when exporting functionality. - Derive `Debug` for `FamStructWrapper` & `EventFd`. ### Changed - The `ioctl_expr` is now a const function instead of a macro. ## v0.9.0 ### Changed * Fixed safety for sock_ctrl_msg::raw_recvmsg() and enhanced documentation * Fixed sock_cmsg: ensured copy_nonoverlapping safety * [[#135](https://github.com/rust-vmm/vmm-sys-util/pull/135)]: sock_ctrl_msg: mark recv_with_fds as unsafe ## v0.8.0 * Added set_check_for_hangup() to PollContext. * Added writable()/has_error()/raw_events() to PollEvent. * Derived Copy/Clone for PollWatchingEvents. * Fixed the implementation of `write_zeroes` to use `FALLOC_FL_ZERO_RANGE` instead of `FALLOC_FL_PUNCH_HOLE`. * Added `write_all_zeroes` to `WriteZeroes`, which calls `write_zeroes` in a loop until the requested length is met. * Added a new trait, `WriteZeroesAt`, which allows giving the offset in file instead of using the current cursor. * Removed `max_events` from `Epoll::wait` which removes possible undefined behavior. * [[#104](https://github.com/rust-vmm/vmm-sys-util/issues/104)]: Fixed FAM struct `PartialEq` implementation. * [[#85](https://github.com/rust-vmm/vmm-sys-util/issues/85)]: Fixed FAM struct `Clone` implementation. * [[#99](https://github.com/rust-vmm/vmm-sys-util/issues/99)]: Validate the maximum capacity when initializing FAM Struct. # v0.7.0 * Switched to Rust edition 2018. * Added the `metric` module that provides a `Metric` interface as well as a default implementation for `AtomicU64`. # v0.6.1 * Implemented `From` for `errno::Error`. # v0.6.0 * Derived Copy for EpollEvent. * Implemented Debug for EpollEvent. * Changed `Epoll::ctl` signature such that `EpollEvent` is passed by value and not by reference. * Enabled this crate to be used on other Unixes (besides Linux) by using target_os = linux where appropriate. # v0.5.0 * Added conditionally compiled `serde` compatibility to `FamStructWrapper`, gated by the `with-serde` feature. * Implemented `Into