1- use goblin:: pe:: PE ;
21use crate :: utils:: error:: PackerError ;
32use goblin:: pe:: characteristic:: IMAGE_FILE_DLL ;
3+ use goblin:: pe:: PE ;
44
55pub struct PEParser < ' a > {
66 pe : PE < ' a > ,
@@ -20,19 +20,22 @@ impl<'a> PEParser<'a> {
2020 pub fn extract_section_data < ' b > (
2121 & self ,
2222 section : & goblin:: pe:: section_table:: SectionTable ,
23- buffer : & ' b [ u8 ]
23+ buffer : & ' b [ u8 ] ,
2424 ) -> & ' b [ u8 ] {
2525 let start = section. pointer_to_raw_data as usize ;
2626 let size = section. size_of_raw_data as usize ;
27- if start >= buffer. len ( ) { return & buffer[ 0 ..0 ] ; }
27+ if start >= buffer. len ( ) {
28+ return & buffer[ 0 ..0 ] ;
29+ }
2830 let end = start. saturating_add ( size) . min ( buffer. len ( ) ) ;
2931 & buffer[ start..end]
3032 }
3133
3234 pub fn entry_point ( & self ) -> u32 {
3335 // goblin exposes optional_header as Option<OptionalHeader>
3436 // address_of_entry_point is in standard_fields
35- ( self . pe
37+ ( self
38+ . pe
3639 . header
3740 . optional_header
3841 . as_ref ( )
@@ -46,15 +49,23 @@ impl<'a> PEParser<'a> {
4649
4750 // Helper: raw DOS header bytes (first 64 bytes)
4851 pub fn get_dos_header ( & self ) -> Option < & [ u8 ] > {
49- if self . data . len ( ) >= 64 { Some ( & self . data [ ..64 ] ) } else { None }
52+ if self . data . len ( ) >= 64 {
53+ Some ( & self . data [ ..64 ] )
54+ } else {
55+ None
56+ }
5057 }
5158
5259 // Helper: raw COFF header bytes (20 bytes at e_lfanew + 4)
5360 pub fn get_coff_header ( & self ) -> Option < & [ u8 ] > {
5461 let pe_off = self . read_u32_le ( 0x3C ) ? as usize ;
5562 let start = pe_off. checked_add ( 4 ) ?;
5663 let end = start. checked_add ( 20 ) ?;
57- if end <= self . data . len ( ) { Some ( & self . data [ start..end] ) } else { None }
64+ if end <= self . data . len ( ) {
65+ Some ( & self . data [ start..end] )
66+ } else {
67+ None
68+ }
5869 }
5970
6071 // Helper: raw Optional header bytes (size given in COFF header at offset +16, u16)
@@ -66,7 +77,11 @@ impl<'a> PEParser<'a> {
6677 } else { return None } ;
6778 let opt_start = coff_start. checked_add ( 20 ) ?;
6879 let opt_end = opt_start. checked_add ( size_opt) ?;
69- if opt_end <= self . data . len ( ) { Some ( & self . data [ opt_start..opt_end] ) } else { None }
80+ if opt_end <= self . data . len ( ) {
81+ Some ( & self . data [ opt_start..opt_end] )
82+ } else {
83+ None
84+ }
7085 }
7186
7287 pub fn section_count ( & self ) -> usize {
@@ -85,4 +100,4 @@ impl<'a> PEParser<'a> {
85100 None
86101 }
87102 }
88- }
103+ }
0 commit comments