From ff82c244f77f46da9245b42ede56c0500cd6b56f Mon Sep 17 00:00:00 2001 From: Tamir Duberstein Date: Sun, 2 Mar 2025 08:16:35 -0500 Subject: [PATCH] netlink: avoiding casting pointers to usize --- aya/src/sys/netlink.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/aya/src/sys/netlink.rs b/aya/src/sys/netlink.rs index 6b8b5e7b..f67f6b92 100644 --- a/aya/src/sys/netlink.rs +++ b/aya/src/sys/netlink.rs @@ -707,9 +707,13 @@ impl From for io::Error { } unsafe fn request_attributes(req: &mut T, msg_len: usize) -> &mut [u8] { - let attrs_addr = align_to(req as *mut _ as usize + msg_len, NLMSG_ALIGNTO as usize); - let attrs_end = req as *mut _ as usize + mem::size_of::(); - slice::from_raw_parts_mut(attrs_addr as *mut u8, attrs_end - attrs_addr) + let req: *mut _ = req; + let req: *mut u8 = req.cast(); + let attrs_addr = req.add(msg_len); + let align_offset = attrs_addr.align_offset(NLMSG_ALIGNTO as usize); + let attrs_addr = attrs_addr.add(align_offset); + let len = mem::size_of::() - msg_len - align_offset; + slice::from_raw_parts_mut(attrs_addr, len) } fn bytes_of(val: &T) -> &[u8] {