[libos] Add iov buffer check for readv and writev
Signed-off-by: Qi Zheng <huaiqing.zq@antgroup.com>
This commit is contained in:
parent
dc060c57b4
commit
b746fea82b
@ -167,9 +167,12 @@ fn do_writev_offset(
|
|||||||
for iov_i in 0..count {
|
for iov_i in 0..count {
|
||||||
let iov_ptr = unsafe { iov.offset(iov_i as isize) };
|
let iov_ptr = unsafe { iov.offset(iov_i as isize) };
|
||||||
let iov = unsafe { &*iov_ptr };
|
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) };
|
let buf = unsafe { std::slice::from_raw_parts(iov.base as *const u8, iov.len) };
|
||||||
bufs_vec.push(buf);
|
bufs_vec.push(buf);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
bufs_vec
|
bufs_vec
|
||||||
};
|
};
|
||||||
let bufs = &bufs_vec[..];
|
let bufs = &bufs_vec[..];
|
||||||
@ -206,9 +209,12 @@ fn do_readv_offset(
|
|||||||
for iov_i in 0..count {
|
for iov_i in 0..count {
|
||||||
let iov_ptr = unsafe { iov.offset(iov_i as isize) };
|
let iov_ptr = unsafe { iov.offset(iov_i as isize) };
|
||||||
let iov = unsafe { &*iov_ptr };
|
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) };
|
let buf = unsafe { std::slice::from_raw_parts_mut(iov.base as *mut u8, iov.len) };
|
||||||
bufs_vec.push(buf);
|
bufs_vec.push(buf);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
bufs_vec
|
bufs_vec
|
||||||
};
|
};
|
||||||
let bufs = &mut bufs_vec[..];
|
let bufs = &mut bufs_vec[..];
|
||||||
|
Loading…
Reference in New Issue
Block a user