From 9d16c87e5004af5891aec60e260c9ed436ad680c Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Sun, 12 Feb 2023 13:53:07 +0100 Subject: [PATCH] clippy --- elven-forest/src/main.rs | 3 +-- elven-parser/src/consts.rs | 1 + elven-parser/src/defs.rs | 19 ++++++++++++------- elven-parser/src/idx.rs | 1 + elven-parser/src/lib.rs | 2 ++ 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/elven-forest/src/main.rs b/elven-forest/src/main.rs index 46e398f..3c9e4c9 100644 --- a/elven-forest/src/main.rs +++ b/elven-forest/src/main.rs @@ -110,8 +110,7 @@ fn print_file(path: &str) -> anyhow::Result<()> { .map(|sym| { let name = sym_display_name(elf, sym)?; let section = match sym.shndx.0 { - c::SHN_ABS => " ".to_string(), - c::SHN_COMMON => "".to_string(), + c::SHN_ABS | c::SHN_COMMON => String::new(), _ => elf .sh_string(elf.section_header(sym.shndx)?.name)? .to_string(), diff --git a/elven-parser/src/consts.rs b/elven-parser/src/consts.rs index 91e6c48..02a7743 100644 --- a/elven-parser/src/consts.rs +++ b/elven-parser/src/consts.rs @@ -1,4 +1,5 @@ #![allow(non_upper_case_globals)] +#![allow(clippy::unreadable_literal)] macro_rules! const_group_with_fmt { ( diff --git a/elven-parser/src/defs.rs b/elven-parser/src/defs.rs index 0307ebc..14cbc9f 100644 --- a/elven-parser/src/defs.rs +++ b/elven-parser/src/defs.rs @@ -1,6 +1,6 @@ //! Structures and parsers for ELF64. ELF32 can knock itself out. //! -//! See https://man7.org/linux/man-pages/man5/elf.5.html +//! See use crate::{ consts::{self as c, DynamicTag, ShType}, @@ -11,7 +11,8 @@ use bstr::BStr; use std::{ fmt::{Debug, Display}, - mem, string, + mem, + string::{self, FromUtf8Error}, }; use bytemuck::{Pod, PodCastError, Zeroable}; @@ -39,7 +40,7 @@ pub struct Offset(pub u64); impl ToIdxUsize for Offset { fn to_idx_usize(self) -> usize { - self.0 as usize + self.0.to_idx_usize() } } @@ -184,7 +185,7 @@ impl RelInfo { } pub fn r#type(&self) -> u32 { - (self.0 & 0xffffffff) as u32 + (self.0 & 0xffff_ffff) as u32 } } @@ -203,7 +204,11 @@ pub struct Dyn { impl<'a> Elf<'a> { pub fn new(data: &'a [u8]) -> Result { - let magic = data[..c::SELFMAG].try_into().unwrap(); + let magic = data[..c::SELFMAG].try_into().map_err(|_| { + let mut padded = [0, 0, 0, 0]; + padded.copy_from_slice(data); + ElfParseError::WrongMagic(padded) + })?; if magic != *c::ELFMAG { return Err(ElfParseError::WrongMagic(magic)); @@ -275,7 +280,7 @@ impl<'a> Elf<'a> { } let name = name.to_vec(); Err(ElfParseError::SectionNotFound( - string::String::from_utf8(name).map_err(|err| err.into_bytes()), + string::String::from_utf8(name).map_err(FromUtf8Error::into_bytes), )) } @@ -435,7 +440,7 @@ fn load_slice(data: &[u8], amount_of_elems: usize) -> Result<&[T]> { return Err(ElfParseError::FileTooSmall(size, data.len())); } - let data_addr = data as *const [u8] as *const u8 as usize; + let data_addr = (data as *const [u8]).cast::() as usize; let data_align = data_addr.trailing_zeros() as usize; let data = &data[..size]; diff --git a/elven-parser/src/idx.rs b/elven-parser/src/idx.rs index eeb2822..27b50eb 100644 --- a/elven-parser/src/idx.rs +++ b/elven-parser/src/idx.rs @@ -73,6 +73,7 @@ impl ToIdxUsize for usize { } } impl ToIdxUsize for u64 { + #[allow(clippy::cast_possible_truncation)] fn to_idx_usize(self) -> usize { self as usize } diff --git a/elven-parser/src/lib.rs b/elven-parser/src/lib.rs index a1a55aa..819009c 100644 --- a/elven-parser/src/lib.rs +++ b/elven-parser/src/lib.rs @@ -1,3 +1,5 @@ +#![allow(clippy::must_use_candidate, clippy::missing_errors_doc)] + use consts::{DynamicTag, ShType}; pub mod consts;