Only copy the received data to user space in recvmsg
Redundant copy may result in dirty data.
This commit is contained in:
parent
dd63f0194f
commit
4f02e71160
@ -42,11 +42,13 @@ impl HostSocket {
|
|||||||
};
|
};
|
||||||
let retval = self.do_recvmsg_untrusted_data(&mut u_data, flags, name, control)?;
|
let retval = self.do_recvmsg_untrusted_data(&mut u_data, flags, name, control)?;
|
||||||
|
|
||||||
let mut copied = 0;
|
let mut remain = retval.0;
|
||||||
for (i, buf) in data.iter_mut().enumerate() {
|
for (i, buf) in data.iter_mut().enumerate() {
|
||||||
|
if remain >= buf.len() {
|
||||||
buf.copy_from_slice(u_data[i]);
|
buf.copy_from_slice(u_data[i]);
|
||||||
copied += buf.len();
|
remain -= buf.len();
|
||||||
if copied >= retval.0 {
|
} else {
|
||||||
|
buf[0..remain].copy_from_slice(&u_data[i][0..remain]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user