fix: Multiplication overflow in setsockopt

This commit is contained in:
Josh Megnauth
2024-11-23 19:53:33 +00:00
committed by Jeremy Soller
parent a430a7861d
commit a709dd47bf
+6 -2
View File
@@ -11,7 +11,7 @@ use crate::{
error::{Errno, Result, ResultExt},
header::{
arpa_inet::inet_aton,
errno::{EAFNOSUPPORT, EFAULT, EINVAL, ENOSYS, EOPNOTSUPP, EPROTONOSUPPORT},
errno::{EAFNOSUPPORT, EDOM, EFAULT, EINVAL, ENOSYS, EOPNOTSUPP, EPROTONOSUPPORT},
netinet_in::{in_addr, in_port_t, sockaddr_in},
string::strnlen,
sys_socket::{constants::*, msghdr, sa_family_t, sockaddr, socklen_t},
@@ -359,9 +359,13 @@ impl PalSocket for Sys {
let fd = FdGuard::new(syscall::dup(socket as usize, timeout_name)?);
let Some(tv_nsec) = timeval.tv_usec.checked_mul(1000) else {
return Err(Errno(EDOM));
};
let timespec = syscall::TimeSpec {
tv_sec: timeval.tv_sec as i64,
tv_nsec: timeval.tv_usec * 1000,
tv_nsec,
};
Self::write(*fd as c_int, &timespec)?;