[libos] Add iov buffer check for readv and writev

Signed-off-by: Qi Zheng <huaiqing.zq@antgroup.com>
This commit is contained in:
Qi Zheng 2023-12-29 16:55:57 +08:00 committed by volcano
parent dc060c57b4
commit b746fea82b

@ -167,9 +167,12 @@ fn do_writev_offset(
for iov_i in 0..count {
let iov_ptr = unsafe { iov.offset(iov_i as isize) };
let iov = unsafe { &*iov_ptr };
if iov.len != 0 {
from_user::check_array(iov.base as *const u8, iov.len)?;
let buf = unsafe { std::slice::from_raw_parts(iov.base as *const u8, iov.len) };
bufs_vec.push(buf);
}
}
bufs_vec
};
let bufs = &bufs_vec[..];
@ -206,9 +209,12 @@ fn do_readv_offset(
for iov_i in 0..count {
let iov_ptr = unsafe { iov.offset(iov_i as isize) };
let iov = unsafe { &*iov_ptr };
if iov.len != 0 {
from_user::check_mut_array(iov.base as *mut u8, iov.len)?;
let buf = unsafe { std::slice::from_raw_parts_mut(iov.base as *mut u8, iov.len) };
bufs_vec.push(buf);
}
}
bufs_vec
};
let bufs = &mut bufs_vec[..];