diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 4ef616e3f..07d6c738d 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -73,7 +73,7 @@ jobs: runs-on: windows-latest steps: - name: Install QEMU - run: choco install qemu + run: choco install qemu --version 2023.4.24 - name: Checkout sources uses: actions/checkout@v3 diff --git a/uefi-test-runner/src/proto/media.rs b/uefi-test-runner/src/proto/media.rs index 0d2585742..788548e95 100644 --- a/uefi-test-runner/src/proto/media.rs +++ b/uefi-test-runner/src/proto/media.rs @@ -1,6 +1,7 @@ use alloc::string::ToString; use core::cell::RefCell; use core::ptr::NonNull; +use uefi::data_types::Align; use uefi::prelude::*; use uefi::proto::media::block::BlockIO; use uefi::proto::media::disk::{DiskIo, DiskIo2, DiskIo2Token}; @@ -29,8 +30,12 @@ fn test_existing_dir(directory: &mut Directory) { let dir = RefCell::new(dir); + assert_eq!(FileInfo::alignment(), 8); + #[repr(align(8))] + struct Buf([u8; 200]); + // Backing memory to read the file info data into. - let mut stack_buf = [0; 200]; + let mut stack_buf = Buf([0; 200]); // The file names that the test read from the directory. let entry_names = RefCell::new(vec![]); @@ -44,7 +49,7 @@ fn test_existing_dir(directory: &mut Directory) { let mut entry_names = entry_names.borrow_mut(); loop { let entry = dir - .read_entry(&mut stack_buf) + .read_entry(&mut stack_buf.0) .expect("failed to read directory"); if let Some(entry) = entry { entry_names.push(entry.file_name().to_string()); diff --git a/uefi/src/proto/media/file/info.rs b/uefi/src/proto/media/file/info.rs index 4bb7b8d7f..286962b81 100644 --- a/uefi/src/proto/media/file/info.rs +++ b/uefi/src/proto/media/file/info.rs @@ -68,7 +68,7 @@ trait InfoInternal: Align + ptr_meta::Pointee { { // Calculate the final size of the struct. let name_length_ucs2 = name.as_slice_with_nul().len(); - let name_size = name_length_ucs2 * mem::size_of::(); + let name_size = mem::size_of_val(name.as_slice_with_nul()); let info_size = Self::name_offset() + name_size; let info_size = Self::round_up_to_alignment(info_size); diff --git a/uefi/src/proto/network/pxe.rs b/uefi/src/proto/network/pxe.rs index 753205635..979b4ed54 100644 --- a/uefi/src/proto/network/pxe.rs +++ b/uefi/src/proto/network/pxe.rs @@ -680,7 +680,7 @@ impl DiscoverInfo { let required_size = core::mem::size_of::() * 4 + core::mem::size_of::() + core::mem::size_of::() - + core::mem::size_of::() * server_count; + + core::mem::size_of_val(srv_list); if buffer.len() < required_size { return Err(Status::BUFFER_TOO_SMALL.into()); diff --git a/uefi/src/proto/rng.rs b/uefi/src/proto/rng.rs index 331e99dfe..1fe3aa79b 100644 --- a/uefi/src/proto/rng.rs +++ b/uefi/src/proto/rng.rs @@ -17,7 +17,7 @@ impl Rng { &mut self, algorithm_list: &'buf mut [RngAlgorithmType], ) -> Result<&'buf [RngAlgorithmType], Option> { - let mut algorithm_list_size = algorithm_list.len() * mem::size_of::(); + let mut algorithm_list_size = mem::size_of_val(algorithm_list); unsafe { (self.0.get_info)( diff --git a/uefi/src/result/mod.rs b/uefi/src/result/mod.rs index bf28680ac..5afc9b7df 100644 --- a/uefi/src/result/mod.rs +++ b/uefi/src/result/mod.rs @@ -1,4 +1,5 @@ -///! Facilities for dealing with UEFI operation results. +//! Facilities for dealing with UEFI operation results. + use core::fmt::Debug; /// The error type that we use, essentially a status code + optional additional data