summaryrefslogtreecommitdiff
path: root/src/sys/socket
diff options
context:
space:
mode:
authorYuxuan Shui <yshuiv7@gmail.com>2019-10-15 20:13:40 +0100
committerYuxuan Shui <yshuiv7@gmail.com>2019-10-15 20:13:40 +0100
commita510b47aa073318df23531f48fd6ae3083baf703 (patch)
tree66d6eb4bd36d5b5da61ade54d6fdf7831cf0a38d /src/sys/socket
parenta220ded341b826275b4243722af417f55cb23be0 (diff)
downloadnix-a510b47aa073318df23531f48fd6ae3083baf703.zip
Properly initialize msghdr when using musl
Because of the use of MaybeUninit::uninit, the padding fields in msghdr, which only present on musl builds, are not initialized. Causing garbage data to be sent to the kernel. This change ensures the paddings are always zeroed.
Diffstat (limited to 'src/sys/socket')
-rw-r--r--src/sys/socket/mod.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/sys/socket/mod.rs b/src/sys/socket/mod.rs
index ca4505fa..9e8cefae 100644
--- a/src/sys/socket/mod.rs
+++ b/src/sys/socket/mod.rs
@@ -857,7 +857,7 @@ pub fn sendmsg(fd: RawFd, iov: &[IoVec<&[u8]>], cmsgs: &[ControlMessage],
let mhdr = unsafe {
// Musl's msghdr has private fields, so this is the only way to
// initialize it.
- let mut mhdr = mem::MaybeUninit::<msghdr>::uninit();
+ let mut mhdr = mem::MaybeUninit::<msghdr>::zeroed();
let p = mhdr.as_mut_ptr();
(*p).msg_name = name as *mut _;
(*p).msg_namelen = namelen;
@@ -910,7 +910,7 @@ pub fn recvmsg<'a>(fd: RawFd, iov: &[IoVec<&mut [u8]>],
let mut mhdr = unsafe {
// Musl's msghdr has private fields, so this is the only way to
// initialize it.
- let mut mhdr = mem::MaybeUninit::<msghdr>::uninit();
+ let mut mhdr = mem::MaybeUninit::<msghdr>::zeroed();
let p = mhdr.as_mut_ptr();
(*p).msg_name = address.as_mut_ptr() as *mut c_void;
(*p).msg_namelen = mem::size_of::<sockaddr_storage>() as socklen_t;