Skip to content

Commit 194b3a9

Browse files
Merge pull request #47 from cube0x8/qemu_snapshot_typeconf
Avoid type confusion on interval tree root node when creating snapshot
2 parents 75d15d5 + 0c51581 commit 194b3a9

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

linux-user/syscall.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13679,15 +13679,20 @@ struct libafl_mapinfo {
1367913679
int flags, is_priv;
1368013680
};
1368113681
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);
1368313683

1368413684
IntervalTreeNode * libafl_maps_first(IntervalTreeRoot * map_info) {
1368513685
return interval_tree_iter_first(map_info, 0, -1);
1368613686
}
1368713687

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) {
1368913689
if (!node || !ret)
1369013690
return NULL;
13691+
13692+
if (is_root) {
13693+
return libafl_maps_next(interval_tree_iter_next(node, 0, -1), ret, false);
13694+
}
13695+
1369113696
MapInfo *e = container_of(node, MapInfo, itree);
1369213697

1369313698
if (h2g_valid(e->itree.start)) {
@@ -13699,7 +13704,7 @@ IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinf
1369913704
max : (uintptr_t) g2h_untagged(GUEST_ADDR_MAX) + 1;
1370013705

1370113706
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);
1370313708
}
1370413709

1370513710
int libafl_flags = 0;
@@ -13716,7 +13721,7 @@ IntervalTreeNode * libafl_maps_next(IntervalTreeNode *node, struct libafl_mapinf
1371613721

1371713722
return interval_tree_iter_next(node, 0, -1);
1371813723
} 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);
1372013725
}
1372113726
}
1372213727

0 commit comments

Comments
 (0)