mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
tpm: replace as <pointer> casts with safer alternatives
`as` casts can change mutability, which quickly leads to undefined behavior. Signed-off-by: Julian Schindel <mail@arctic-alpaca.de>
This commit is contained in:
committed by
Rob Bradford
parent
032f29da29
commit
8abd9d7db5
+8
-8
@@ -8,7 +8,7 @@ use std::path::Path;
|
|||||||
use std::{mem, ptr};
|
use std::{mem, ptr};
|
||||||
|
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
use libc::{c_void, sockaddr_storage, socklen_t};
|
use libc::{sockaddr_storage, socklen_t};
|
||||||
use log::{debug, error};
|
use log::{debug, error};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ impl Emulator {
|
|||||||
fds[0],
|
fds[0],
|
||||||
libc::SOL_SOCKET,
|
libc::SOL_SOCKET,
|
||||||
libc::SO_RCVTIMEO,
|
libc::SO_RCVTIMEO,
|
||||||
&tv as *const _ as *const libc::c_void,
|
(&raw const tv).cast(),
|
||||||
std::mem::size_of::<libc::timeval>() as u32,
|
std::mem::size_of::<libc::timeval>() as u32,
|
||||||
);
|
);
|
||||||
if ret == -1 {
|
if ret == -1 {
|
||||||
@@ -318,8 +318,8 @@ impl Emulator {
|
|||||||
cmd.buffer, cmd.input_len
|
cmd.buffer, cmd.input_len
|
||||||
);
|
);
|
||||||
|
|
||||||
let data_vecs = [libc::iovec {
|
let mut data_vecs = [libc::iovec {
|
||||||
iov_base: cmd.buffer.as_ptr() as *mut libc::c_void,
|
iov_base: cmd.buffer.as_mut_ptr().cast(),
|
||||||
iov_len: cmd.input_len,
|
iov_len: cmd.input_len,
|
||||||
}; 1];
|
}; 1];
|
||||||
|
|
||||||
@@ -327,7 +327,7 @@ impl Emulator {
|
|||||||
let mut msghdr: libc::msghdr = unsafe { mem::zeroed() };
|
let mut msghdr: libc::msghdr = unsafe { mem::zeroed() };
|
||||||
msghdr.msg_name = ptr::null_mut();
|
msghdr.msg_name = ptr::null_mut();
|
||||||
msghdr.msg_namelen = 0;
|
msghdr.msg_namelen = 0;
|
||||||
msghdr.msg_iov = data_vecs.as_ptr() as *mut libc::iovec;
|
msghdr.msg_iov = data_vecs.as_mut_ptr().cast();
|
||||||
msghdr.msg_iovlen = data_vecs.len() as _;
|
msghdr.msg_iovlen = data_vecs.len() as _;
|
||||||
msghdr.msg_control = ptr::null_mut();
|
msghdr.msg_control = ptr::null_mut();
|
||||||
msghdr.msg_controllen = 0;
|
msghdr.msg_controllen = 0;
|
||||||
@@ -348,11 +348,11 @@ impl Emulator {
|
|||||||
unsafe {
|
unsafe {
|
||||||
let ret = libc::recvfrom(
|
let ret = libc::recvfrom(
|
||||||
self.data_fd,
|
self.data_fd,
|
||||||
cmd.buffer.as_mut_ptr() as *mut c_void,
|
cmd.buffer.as_mut_ptr().cast(),
|
||||||
cmd.buffer.len(),
|
cmd.buffer.len(),
|
||||||
0,
|
0,
|
||||||
&mut addr as *mut libc::sockaddr_storage as *mut libc::sockaddr,
|
(&raw mut addr).cast(),
|
||||||
&mut len as *mut socklen_t,
|
&raw mut len,
|
||||||
);
|
);
|
||||||
if ret == -1 {
|
if ret == -1 {
|
||||||
return Err(Error::SendReceive(anyhow!(
|
return Err(Error::SendReceive(anyhow!(
|
||||||
|
|||||||
Reference in New Issue
Block a user