Skip to content

Commit 8befe52

Browse files
committed
netbsd: Clarify type conversions are lossless.
1 parent 11db1ff commit 8befe52

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/netbsd.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
//! Implementation for NetBSD
22
use crate::{lazy::LazyPtr, util_libc::sys_fill_exact, Error};
3-
use core::{ffi::c_void, mem::MaybeUninit, ptr};
3+
use core::{cmp, ffi::c_void, mem::MaybeUninit, ptr};
44

55
fn kern_arnd(buf: &mut [MaybeUninit<u8>]) -> libc::ssize_t {
66
static MIB: [libc::c_int; 2] = [libc::CTL_KERN, libc::KERN_ARND];
7-
let mut len = buf.len();
7+
let mut len = cmp::min(len, libc::ssize_t::MAX.unsignd_abs());
88
let ret = unsafe {
99
libc::sysctl(
1010
MIB.as_ptr(),
11+
#[allow(clippy::cast_possible_truncation)]
1112
MIB.len() as libc::c_uint,
1213
buf.as_mut_ptr().cast::<c_void>(),
1314
&mut len,
@@ -18,7 +19,10 @@ fn kern_arnd(buf: &mut [MaybeUninit<u8>]) -> libc::ssize_t {
1819
if ret == -1 {
1920
-1
2021
} else {
21-
len as libc::ssize_t
22+
// We clamped the request to `ssize_t::MAX` bytes so this lossless.
23+
#[allow(clippy::cast_possible_truncation)]
24+
let len = len as libc::ssize_t;
25+
len
2226
}
2327
}
2428

0 commit comments

Comments
 (0)