apkdmverity: use data_model crate for better handling of C structs
The data_model:DataInit trait provides methods for converting between
a C struct and an array of the same size, allowing us to drop the hand
crafted as_u8_slice methods.
Bug: N/A
Test: cargo test
Test: atest apkdmverity.test
Change-Id: Iaff910f0a638e91a428777b94dc6fb0b5fe53831
diff --git a/apkverity/src/dm/sys.rs b/apkverity/src/dm/sys.rs
index f623a2b..e709bf0 100644
--- a/apkverity/src/dm/sys.rs
+++ b/apkverity/src/dm/sys.rs
@@ -15,6 +15,7 @@
*/
use bitflags::bitflags;
+use data_model::DataInit;
// UAPI for device mapper can be found at include/uapi/linux/dm-ioctl.h
@@ -43,6 +44,7 @@
}
#[repr(C)]
+#[derive(Copy, Clone)]
pub struct DmIoctl {
pub version: [u32; 3],
pub data_size: u32,
@@ -58,6 +60,9 @@
pub data: [u8; 7],
}
+// SAFETY: C struct is safe to be initialized from raw data
+unsafe impl DataInit for DmIoctl {}
+
pub const DM_VERSION_MAJOR: u32 = 4;
pub const DM_VERSION_MINOR: u32 = 0;
pub const DM_VERSION_PATCHLEVEL: u32 = 0;