Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions crates/host_env/src/socket.rs
Original file line number Diff line number Diff line change
Expand Up @@ -973,6 +973,10 @@ pub fn parse_ancillary_messages(control: &[u8]) -> Vec<AncillaryMessage> {
// SAFETY: A complete header is present. The input may be unaligned,
// so read the integer fields with an unaligned load.
let header = unsafe { remaining.as_ptr().cast::<libc::cmsghdr>().read_unaligned() };
#[allow(
clippy::unnecessary_cast,
reason = "cmsg_len is not usize on all platforms"
)]
let declared_len = header.cmsg_len as usize;
let Some(payload_len) = declared_len.checked_sub(data_offset) else {
break;
Expand Down Expand Up @@ -1035,7 +1039,8 @@ pub fn parse_ancillary_messages(control: &[u8]) -> Vec<AncillaryMessage> {
result
}

#[cfg(all(test, unix, not(target_os = "redox")))]
#[cfg(test)]
#[cfg(all(unix, not(target_os = "redox")))]
mod ancillary_parse_tests {
use super::{checked_cmsg_len, checked_cmsg_space, parse_ancillary_messages};

Expand All @@ -1058,7 +1063,7 @@ mod ancillary_parse_tests {
let align = core::mem::align_of::<libc::cmsghdr>();
let mut storage = vec![0u8; first_space + second_space + align];
let shift = (0..align)
.find(|&n| (storage.as_ptr() as usize + n) % align != 0)
.find(|&n| !(storage.as_ptr() as usize + n).is_multiple_of(align))
.unwrap_or(0);
let control = &mut storage[shift..shift + first_space + second_space];
write_header(control, checked_cmsg_len(3).unwrap(), 7, 8);
Expand Down Expand Up @@ -1140,7 +1145,7 @@ mod ancillary_parse_tests {
let first_space = checked_cmsg_space(0).unwrap();
let data_offset = checked_cmsg_len(0).unwrap();
let mut storage = Aligned([0; 128]);
let control = &mut storage.0[..first_space + data_offset + 1];
let control = &mut storage.0[..=first_space + data_offset];
write_header(control, data_offset, 1, 2);
write_header(
&mut control[first_space..],
Expand Down
7 changes: 3 additions & 4 deletions crates/stdlib/src/elementtree.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1015,7 +1015,7 @@ pub(crate) mod _elementtree {
drop(inner);
return Err(vm.new_index_error("child assignment index out of range"));
};
if !value.downcastable::<PyElement>() {
if !value.downcastable::<Self>() {
drop(inner);
return reject_element(&value, vm);
}
Expand All @@ -1026,16 +1026,15 @@ pub(crate) mod _elementtree {
let items: Vec<PyObjectRef> = value.try_to_value(vm)?;
// This check cannot call Python. Delay reporting it until
// after the extended-slice length check.
let invalid = items.iter().find(|item| !item.downcastable::<PyElement>());
let invalid = items.iter().find(|item| !item.downcastable::<Self>());
let mut inner = self.inner.write();
let (range, step, slice_len) = slice.adjust_indices(inner.children.len());
if step != 1 && slice_len != items.len() {
let new_len = items.len();
drop(inner);
drop(items);
return Err(vm.new_value_error(format!(
"attempt to assign sequence of size {} to extended slice of size {}",
new_len, slice_len
"attempt to assign sequence of size {new_len} to extended slice of size {slice_len}"
)));
}
if let Some(item) = invalid {
Expand Down
1 change: 1 addition & 0 deletions crates/vm/src/stdlib/posix.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1562,6 +1562,7 @@ pub mod module {

if let Some(dict) = crate::stdlib::os::envobj_fast_dict(env, vm) {
// Snapshot references before any path conversion can mutate the mapping.
#[allow(clippy::needless_collect, reason = "the snapshot is intentional")]
let pairs: Vec<_> = dict.into_iter().collect();
return pairs
.into_iter()
Expand Down
Loading