@@ -13673,15 +13673,20 @@ struct libafl_mapinfo {
13673
13673
int flags , is_priv ;
13674
13674
};
13675
13675
IntervalTreeNode * libafl_maps_first (IntervalTreeRoot * map_info );
13676
- IntervalTreeNode * libafl_maps_next (IntervalTreeNode * node , struct libafl_mapinfo * ret );
13676
+ IntervalTreeNode * libafl_maps_next (IntervalTreeNode * node , struct libafl_mapinfo * ret , bool is_root );
13677
13677
13678
13678
IntervalTreeNode * libafl_maps_first (IntervalTreeRoot * map_info ) {
13679
13679
return interval_tree_iter_first (map_info , 0 , -1 );
13680
13680
}
13681
13681
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
if (!node || !ret )
13684
13684
return NULL ;
13685
+
13686
+ if (is_root ) {
13687
+ return libafl_maps_next (interval_tree_iter_next (node , 0 , -1 ), ret , false);
13688
+ }
13689
+
13685
13690
MapInfo * e = container_of (node , MapInfo , itree );
13686
13691
13687
13692
if (h2g_valid (e -> itree .start )) {
@@ -13693,7 +13698,7 @@ IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinf
13693
13698
max : (uintptr_t ) g2h_untagged (GUEST_ADDR_MAX ) + 1 ;
13694
13699
13695
13700
if (!page_check_range (h2g (min ), max - min , flags )) {
13696
- return libafl_maps_next (interval_tree_iter_next (node , 0 , -1 ), ret );
13701
+ return libafl_maps_next (interval_tree_iter_next (node , 0 , -1 ), ret , false );
13697
13702
}
13698
13703
13699
13704
int libafl_flags = 0 ;
@@ -13710,7 +13715,7 @@ IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinf
13710
13715
13711
13716
return interval_tree_iter_next (node , 0 , -1 );
13712
13717
} else {
13713
- return libafl_maps_next (interval_tree_iter_next (node , 0 , -1 ), ret );
13718
+ return libafl_maps_next (interval_tree_iter_next (node , 0 , -1 ), ret , false );
13714
13719
}
13715
13720
}
13716
13721
0 commit comments