mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-23 09:23:25 +00:00
Add check during the conversion from timeval_t
to Duration
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
70505ff4f8
commit
4fa4e5ef2a
@ -19,8 +19,10 @@ pub fn sys_select(
|
||||
let timeout = if timeval_addr == 0 {
|
||||
None
|
||||
} else {
|
||||
let timeval = ctx.get_user_space().read_val::<timeval_t>(timeval_addr)?;
|
||||
Some(Duration::from(timeval))
|
||||
let mut timeval = ctx.get_user_space().read_val::<timeval_t>(timeval_addr)?;
|
||||
timeval.sec += timeval.usec / 1_000_000;
|
||||
timeval.usec %= 1_000_000;
|
||||
Some(Duration::try_from(timeval)?)
|
||||
};
|
||||
|
||||
do_sys_select(
|
||||
|
@ -34,8 +34,8 @@ pub fn sys_setitimer(
|
||||
}
|
||||
let user_space = ctx.get_user_space();
|
||||
let new_itimerval = user_space.read_val::<itimerval_t>(new_itimerval_addr)?;
|
||||
let interval = Duration::from(new_itimerval.it_interval);
|
||||
let expire_time = Duration::from(new_itimerval.it_value);
|
||||
let interval = Duration::try_from(new_itimerval.it_interval)?;
|
||||
let expire_time = Duration::try_from(new_itimerval.it_value)?;
|
||||
|
||||
let process_timer_manager = ctx.process.timer_manager();
|
||||
let timer = match ItimerType::try_from(itimer_type)? {
|
||||
|
Reference in New Issue
Block a user