diff options
| author | LinkTed <LinkTed@users.noreply.github.com> | 2020-08-25 18:38:25 +0200 |
|---|---|---|
| committer | LinkTed <LinkTed@users.noreply.github.com> | 2020-10-10 15:19:11 +0200 |
| commit | 3dfab6fb6443983d22fa075920a3d66dd54817c7 (patch) | |
| tree | 312abd34768f62a556f47f7e02c5541910e3a354 /library/std/src/sys/unix/ext | |
| parent | e1084052a7f6d65a5c5e9656ba507ba42c4caacb (diff) | |
| download | rust-3dfab6fb6443983d22fa075920a3d66dd54817c7.tar.gz rust-3dfab6fb6443983d22fa075920a3d66dd54817c7.zip | |
Add integer overflow check
Diffstat (limited to 'library/std/src/sys/unix/ext')
| -rw-r--r-- | library/std/src/sys/unix/ext/net/ancillary.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/library/std/src/sys/unix/ext/net/ancillary.rs b/library/std/src/sys/unix/ext/net/ancillary.rs index 142526f3a41..8ba389762fb 100644 --- a/library/std/src/sys/unix/ext/net/ancillary.rs +++ b/library/std/src/sys/unix/ext/net/ancillary.rs @@ -72,7 +72,15 @@ fn add_to_ancillary_data<T: Clone>( cmsg_level: libc::c_int, cmsg_type: libc::c_int, ) -> bool { - let len = (source.len() * size_of::<T>()) as u32; + let len = if let Some(len) = source.len().checked_mul(size_of::<T>()) { + if let Ok(len) = u32::try_from(len) { + len + } else { + return false; + } + } else { + return false; + }; unsafe { let additional_space = libc::CMSG_SPACE(len) as usize; |
