@@ -13679,15 +13679,20 @@ struct libafl_mapinfo {
13679
13679
int flags , is_priv ;
13680
13680
};
13681
13681
IntervalTreeNode * libafl_maps_first (IntervalTreeRoot * map_info );
13682
- IntervalTreeNode * libafl_maps_next (IntervalTreeNode * node , struct libafl_mapinfo * ret );
13682
+ IntervalTreeNode * libafl_maps_next (IntervalTreeNode * node , struct libafl_mapinfo * ret , bool is_root );
13683
13683
13684
13684
IntervalTreeNode * libafl_maps_first (IntervalTreeRoot * map_info ) {
13685
13685
return interval_tree_iter_first (map_info , 0 , -1 );
13686
13686
}
13687
13687
13688
- IntervalTreeNode * libafl_maps_next (IntervalTreeNode * node , struct libafl_mapinfo * ret ) {
13688
+ IntervalTreeNode * libafl_maps_next (IntervalTreeNode * node , struct libafl_mapinfo * ret , bool is_root ) {
13689
13689
if (!node || !ret )
13690
13690
return NULL ;
13691
+
13692
+ if (is_root ) {
13693
+ return libafl_maps_next (interval_tree_iter_next (node , 0 , -1 ), ret , false);
13694
+ }
13695
+
13691
13696
MapInfo * e = container_of (node , MapInfo , itree );
13692
13697
13693
13698
if (h2g_valid (e -> itree .start )) {
@@ -13699,7 +13704,7 @@ IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinf
13699
13704
max : (uintptr_t ) g2h_untagged (GUEST_ADDR_MAX ) + 1 ;
13700
13705
13701
13706
if (!page_check_range (h2g (min ), max - min , flags )) {
13702
- return libafl_maps_next (interval_tree_iter_next (node , 0 , -1 ), ret );
13707
+ return libafl_maps_next (interval_tree_iter_next (node , 0 , -1 ), ret , false );
13703
13708
}
13704
13709
13705
13710
int libafl_flags = 0 ;
@@ -13716,7 +13721,7 @@ IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinf
13716
13721
13717
13722
return interval_tree_iter_next (node , 0 , -1 );
13718
13723
} else {
13719
- return libafl_maps_next (interval_tree_iter_next (node , 0 , -1 ), ret );
13724
+ return libafl_maps_next (interval_tree_iter_next (node , 0 , -1 ), ret , false );
13720
13725
}
13721
13726
}
13722
13727
0 commit comments