[libos] Add iov buffer check for readv and writev
Signed-off-by: Qi Zheng <huaiqing.zq@antgroup.com>
This commit is contained in:
parent
d4de8f59e6
commit
9b6cb4d27f
@ -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[..];
|
||||
|
Loading…
Reference in New Issue
Block a user