From eb854599b87f477a86a5aacf091215ea2c9618c5 Mon Sep 17 00:00:00 2001 From: xtqqczze <45661989+xtqqczze@users.noreply.github.com> Date: Fri, 19 Dec 2025 01:24:21 +0000 Subject: [PATCH] socket: remove UB from `MaybeUninit.assume_init` --- src/sys/socket/mod.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sys/socket/mod.rs b/src/sys/socket/mod.rs index b16c54918b..4dec348320 100644 --- a/src/sys/socket/mod.rs +++ b/src/sys/socket/mod.rs @@ -2407,7 +2407,7 @@ pub fn recvfrom( ) -> Result<(usize, Option)> { unsafe { let mut addr = mem::MaybeUninit::::uninit(); - let mut len = mem::size_of_val(&addr) as socklen_t; + let mut len = T::size(); let ret = Errno::result(libc::recvfrom( sockfd, @@ -2418,7 +2418,7 @@ pub fn recvfrom( &mut len as *mut socklen_t, ))? as usize; - Ok((ret, T::from_raw(addr.assume_init().as_ptr(), Some(len)))) + Ok((ret, T::from_raw(addr.as_ptr().cast(), Some(len)))) } } @@ -2521,7 +2521,7 @@ pub fn getpeername(fd: RawFd) -> Result { Errno::result(ret)?; - T::from_raw(addr.assume_init().as_ptr(), Some(len)).ok_or(Errno::EINVAL) + T::from_raw(addr.as_ptr().cast(), Some(len)).ok_or(Errno::EINVAL) } } @@ -2537,7 +2537,7 @@ pub fn getsockname(fd: RawFd) -> Result { Errno::result(ret)?; - T::from_raw(addr.assume_init().as_ptr(), Some(len)).ok_or(Errno::EINVAL) + T::from_raw(addr.as_ptr().cast(), Some(len)).ok_or(Errno::EINVAL) } }