mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-03 20:22:38 +00:00
Fix potential null-deref in r_rbtree_cont_foreach() ##rizin
This commit is contained in:
parent
0b607b38e0
commit
0967e24b40
@ -113,10 +113,10 @@ R_API void *r_rbtree_cont_find(RContRBTree *tree, void *data, RContRBCmp cmp, vo
|
||||
R_API void *r_rbtree_cont_first(RContRBTree *tree);
|
||||
|
||||
#define r_rbtree_cont_foreach(tree, it, dat) \
|
||||
for ((it) = r_rbtree_first (&tree->root->node); r_rbtree_iter_has(&it) && (dat = r_rbtree_iter_get (&it, RContRBNode, node)->data); r_rbtree_iter_next (&(it)))
|
||||
for ((it) = r_rbtree_first ((tree)->root ? &(tree)->root->node : NULL); r_rbtree_iter_has(&it) && (dat = r_rbtree_iter_get (&it, RContRBNode, node)->data); r_rbtree_iter_next (&(it)))
|
||||
|
||||
#define r_rbtree_cont_foreach_prev(tree, it, dat) \
|
||||
for ((it) = r_rbtree_last (&tree->root->node); r_rbtree_iter_has(&it) && (dat = r_rbtree_iter_get (&it, RContRBNode, node)->data); r_rbtree_iter_prev (&(it)))
|
||||
for ((it) = r_rbtree_last ((tree)->root ? &(tree)->root->node : NULL); r_rbtree_iter_has(&it) && (dat = r_rbtree_iter_get (&it, RContRBNode, node)->data); r_rbtree_iter_prev (&(it)))
|
||||
|
||||
R_API void r_rbtree_cont_free(RContRBTree *tree);
|
||||
|
||||
|
@ -7,6 +7,17 @@ static int simple_cmp(void *incoming, void *in, void *user) {
|
||||
return v[0] - v[1];
|
||||
}
|
||||
|
||||
bool test_r_rbtree_cont_foreach_empty() {
|
||||
RContRBTree *tree = r_rbtree_cont_new ();
|
||||
RBIter alf;
|
||||
void *v;
|
||||
r_rbtree_cont_foreach (tree, alf, v) {
|
||||
mu_assert ("not reachable", false);
|
||||
}
|
||||
r_rbtree_cont_free (tree);
|
||||
mu_end;
|
||||
}
|
||||
|
||||
bool test_r_rbtree_cont_insert() {
|
||||
RContRBTree *tree = r_rbtree_cont_new ();
|
||||
ut32 i;
|
||||
|
Loading…
x
Reference in New Issue
Block a user