@@ -924,4 +924,47 @@ mod test_elf_loader {
924
924
hdr. sh_size = 0x1 ;
925
925
hdr. vm_range ( ) ;
926
926
}
927
+
928
+ #[ test]
929
+ fn test_programheaders_iterator ( ) {
930
+ const ENTRY_SIZE : usize = 56 ;
931
+ let pe_image = & include_bytes ! ( "../../data/blobs/td-payload.elf" ) [ ..] ;
932
+ let elf = crate :: elf64:: Elf :: parse ( pe_image) . unwrap ( ) ;
933
+ let mut p_hdrs = elf. program_headers ( ) . unwrap ( ) ;
934
+
935
+ p_hdrs. index = ( usize:: MAX as usize / ENTRY_SIZE ) + 1 ;
936
+ assert ! ( p_hdrs. next( ) . is_none( ) ) ;
937
+ }
938
+
939
+ #[ test]
940
+ fn test_sectionheaders_iterator ( ) {
941
+ const ENTRY_SIZE : usize = 64 ;
942
+ let pe_image = & include_bytes ! ( "../../data/blobs/td-payload.elf" ) [ ..] ;
943
+ let elf = crate :: elf64:: Elf :: parse ( pe_image) . unwrap ( ) ;
944
+ let mut s_hdrs = elf. section_headers ( ) . unwrap ( ) ;
945
+
946
+ s_hdrs. index = ( usize:: MAX as usize / ENTRY_SIZE ) + 1 ;
947
+ assert ! ( s_hdrs. next( ) . is_none( ) ) ;
948
+ }
949
+
950
+ #[ test]
951
+ fn test_dyns_iterator ( ) {
952
+ const ENTRY_SIZE : usize = 16 ;
953
+ let pe_image = & include_bytes ! ( "../../data/blobs/td-payload.elf" ) [ ..] ;
954
+ let elf = crate :: elf64:: Elf :: parse ( pe_image) . unwrap ( ) ;
955
+ let elf_bin = elf. bytes ;
956
+
957
+ for header in elf. program_headers ( ) . unwrap ( ) {
958
+ println ! ( "header: {:?}\n " , header) ;
959
+
960
+ let mut dyns = Dyns :: parse (
961
+ & elf_bin[ header. p_offset as usize ..] ,
962
+ header. p_filesz as usize ,
963
+ )
964
+ . unwrap ( ) ;
965
+
966
+ dyns. index = ( usize:: MAX as usize / ENTRY_SIZE ) + 1 ;
967
+ assert ! ( dyns. next( ) . is_none( ) ) ;
968
+ }
969
+ }
927
970
}
0 commit comments