Fix userspace GuestMaps (#55)

* Fix userspace GuestMaps

* fix
This commit is contained in:
Andrea Fioraldi 2024-04-07 15:53:59 +02:00 committed by GitHub
parent fd6a2f3cce
commit f1e48d694c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -13679,20 +13679,16 @@ struct libafl_mapinfo {
int flags, is_priv; int flags, is_priv;
}; };
IntervalTreeNode * libafl_maps_first(IntervalTreeRoot * map_info); IntervalTreeNode * libafl_maps_first(IntervalTreeRoot * map_info);
IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinfo* ret, bool is_root); IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinfo* ret);
IntervalTreeNode * libafl_maps_first(IntervalTreeRoot * map_info) { IntervalTreeNode * libafl_maps_first(IntervalTreeRoot * map_info) {
return interval_tree_iter_first(map_info, 0, -1); return interval_tree_iter_first(map_info, 0, -1);
} }
IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinfo* ret, bool is_root) { IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinfo* ret) {
if (!node || !ret) if (!node || !ret)
return NULL; return NULL;
if (is_root) {
return libafl_maps_next(interval_tree_iter_next(node, 0, -1), ret, false);
}
MapInfo *e = container_of(node, MapInfo, itree); MapInfo *e = container_of(node, MapInfo, itree);
if (h2g_valid(e->itree.start)) { if (h2g_valid(e->itree.start)) {
@ -13704,7 +13700,7 @@ IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinf
max : (uintptr_t) g2h_untagged(GUEST_ADDR_MAX) + 1; max : (uintptr_t) g2h_untagged(GUEST_ADDR_MAX) + 1;
if (!page_check_range(h2g(min), max - min, flags)) { if (!page_check_range(h2g(min), max - min, flags)) {
return libafl_maps_next(interval_tree_iter_next(node, 0, -1), ret, false); return libafl_maps_next(interval_tree_iter_next(node, 0, -1), ret);
} }
int libafl_flags = 0; int libafl_flags = 0;
@ -13721,7 +13717,7 @@ IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinf
return interval_tree_iter_next(node, 0, -1); return interval_tree_iter_next(node, 0, -1);
} else { } else {
return libafl_maps_next(interval_tree_iter_next(node, 0, -1), ret, false); return libafl_maps_next(interval_tree_iter_next(node, 0, -1), ret);
} }
} }