rust-vmm / vm-memory

Virtual machine's guest memory crate
Apache License 2.0
299 stars 97 forks source link

fix: Validate return value of get_slice in VolatileMemory functions #251

Closed kalyazin closed 12 months ago

kalyazin commented 12 months ago

Summary of the PR

An issue was discovered in the default implementations of the VolatileMemory::{get_atomic_ref, aligned_as_ref, aligned_as_mut, get_ref, get_array_ref} trait functions, which allows out-of-bounds memory access if the VolatileMemory::get_slice function returns a VolatileSlice whose length is less than the function’s count argument. No implementations of get_slice provided in vm_memory are affected. Users of custom VolatileMemory implementations may be impacted if the custom implementation does not adhere to get_slice's documentation.

This commit fixes this issue by inserting a check that verifies that the VolatileSlice returned by get_slice is of the correct length.

Requirements

Before submitting your PR, please make sure you addressed the following requirements: