@@ -3,7 +3,7 @@ use std::ops::Range;
33use crate :: {
44 decode:: { self , header} ,
55 entry,
6- util:: { read_u32, split_at_byte_exclusive, split_at_pos , var_int} ,
6+ util:: { read_u32, split_at_byte_exclusive, var_int} ,
77 Entry , Version ,
88} ;
99
@@ -94,7 +94,7 @@ fn load_one<'a>(
9494 let ( uid, data) = read_u32 ( data) ?;
9595 let ( gid, data) = read_u32 ( data) ?;
9696 let ( size, data) = read_u32 ( data) ?;
97- let ( hash, data) = split_at_pos ( data, hash_len) ?;
97+ let ( hash, data) = data. split_at_checked ( hash_len) ?;
9898 let ( flags, data) = read_u16 ( data) ?;
9999 let flags = entry:: at_rest:: Flags :: from_bits_retain ( flags) ;
100100 let ( flags, data) = if flags. contains ( entry:: at_rest:: Flags :: EXTENDED ) {
@@ -128,7 +128,7 @@ fn load_one<'a>(
128128 split_at_byte_exclusive ( data, 0 ) ?
129129 } else {
130130 let path_len = ( flags. bits ( ) & entry:: Flags :: PATH_LEN . bits ( ) ) as usize ;
131- let ( path, data) = split_at_pos ( data, path_len) ?;
131+ let ( path, data) = data. split_at_checked ( path_len) ?;
132132 ( path, skip_padding ( data, first_byte_of_entry) )
133133 } ;
134134
@@ -177,5 +177,6 @@ fn skip_padding(data: &[u8], first_byte_of_entry: usize) -> &[u8] {
177177
178178#[ inline]
179179fn read_u16 ( data : & [ u8 ] ) -> Option < ( u16 , & [ u8 ] ) > {
180- split_at_pos ( data, 2 ) . map ( |( num, data) | ( u16:: from_be_bytes ( num. try_into ( ) . unwrap ( ) ) , data) )
180+ data. split_at_checked ( 2 )
181+ . map ( |( num, data) | ( u16:: from_be_bytes ( num. try_into ( ) . unwrap ( ) ) , data) )
181182}
0 commit comments