@@ -100,17 +100,16 @@ pub fn patch_binary(binary_path: &PathBuf, package_type: &crate::PackageType) ->
100
100
. ok_or ( crate :: Error :: MissingBundleTypeVar ) ?;
101
101
102
102
let data_offset = tauri_bundle_section. pointer_to_raw_data as usize ;
103
-
104
- if data_offset + 8 > file_data. len ( ) {
105
- return Err ( crate :: Error :: BinaryOffsetOutOfRange ) ;
106
- }
107
-
108
- let ptr_bytes = & file_data[ data_offset..data_offset + 8 ] ;
109
- let ptr_value = u64:: from_le_bytes ( ptr_bytes. try_into ( ) . map_err ( |_| {
110
- crate :: Error :: BinaryParseError (
111
- std:: io:: Error :: new ( std:: io:: ErrorKind :: InvalidData , "invalid pointer bytes" ) . into ( ) ,
112
- )
113
- } ) ?) ;
103
+ let pointer_size = if pe. is_64 { 8 } else { 4 } ;
104
+ let ptr_bytes = file_data
105
+ . get ( data_offset..data_offset + pointer_size)
106
+ . ok_or ( crate :: Error :: BinaryOffsetOutOfRange ) ?;
107
+ // `try_into` is safe to `unwrap` here because we have already checked the slice's size through `get`
108
+ let ptr_value = if pe. is_64 {
109
+ u64:: from_le_bytes ( ptr_bytes. try_into ( ) . unwrap ( ) )
110
+ } else {
111
+ u32:: from_le_bytes ( ptr_bytes. try_into ( ) . unwrap ( ) ) . into ( )
112
+ } ;
114
113
115
114
let rdata_section = pe
116
115
. sections
@@ -133,12 +132,10 @@ pub fn patch_binary(binary_path: &PathBuf, package_type: &crate::PackageType) ->
133
132
let file_offset = rdata_section. pointer_to_raw_data as usize
134
133
+ ( rva as usize ) . saturating_sub ( rdata_section. virtual_address as usize ) ;
135
134
136
- if file_offset + 3 > file_data. len ( ) {
137
- return Err ( crate :: Error :: BinaryOffsetOutOfRange ) ;
138
- }
139
-
140
135
// Overwrite the string at that offset
141
- let string_bytes = & mut file_data[ file_offset..file_offset + 3 ] ;
136
+ let string_bytes = file_data
137
+ . get_mut ( file_offset..file_offset + 3 )
138
+ . ok_or ( crate :: Error :: BinaryOffsetOutOfRange ) ?;
142
139
match package_type {
143
140
crate :: PackageType :: Nsis => string_bytes. copy_from_slice ( b"NSS" ) ,
144
141
crate :: PackageType :: WindowsMsi => string_bytes. copy_from_slice ( b"MSI" ) ,
0 commit comments