diff options
author | Matt Jordan <mjordan@digium.com> | 2015-04-23 06:50:52 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2015-04-23 06:50:52 -0500 |
commit | 7ccaf8aa46ae98be8289180d6b68c17f177e4f2f (patch) | |
tree | 58f65e947d89489b0f8766e12060de5b1a57a63d | |
parent | 5ae61cf1eb4cccb1983ad8c93e78aab0075b3aaf (diff) | |
parent | c231c85ea4a0a3828097e92661f1691cc5c83014 (diff) |
Merge "Astobj2: Ensure all calls to __adjust_lock pass a valid object."
-rw-r--r-- | main/astobj2_container.c | 6 | ||||
-rw-r--r-- | main/astobj2_hash.c | 2 | ||||
-rw-r--r-- | main/astobj2_rbtree.c | 2 |
3 files changed, 10 insertions, 0 deletions
diff --git a/main/astobj2_container.c b/main/astobj2_container.c index d0abc7985..07d10b9f9 100644 --- a/main/astobj2_container.c +++ b/main/astobj2_container.c @@ -510,6 +510,12 @@ struct ao2_iterator ao2_iterator_init(struct ao2_container *c, int flags) void ao2_iterator_restart(struct ao2_iterator *iter) { + if (!is_ao2_object(iter->c)) { + ast_log(LOG_ERROR, "Iterator container is not valid.\n"); + ast_assert(0); + return; + } + /* Release the last container node reference if we have one. */ if (iter->last_node) { enum ao2_lock_req orig_lock; diff --git a/main/astobj2_hash.c b/main/astobj2_hash.c index 76259dc7f..110dd1602 100644 --- a/main/astobj2_hash.c +++ b/main/astobj2_hash.c @@ -186,6 +186,8 @@ static void hash_ao2_node_destructor(void *v_doomed) * same node. */ my_container = (struct ao2_container_hash *) doomed->common.my_container; + ast_assert(is_ao2_object(my_container)); + __adjust_lock(my_container, AO2_LOCK_REQ_WRLOCK, 1); #if defined(AO2_DEBUG) diff --git a/main/astobj2_rbtree.c b/main/astobj2_rbtree.c index a069c408e..d3a902572 100644 --- a/main/astobj2_rbtree.c +++ b/main/astobj2_rbtree.c @@ -878,6 +878,8 @@ static void rb_ao2_node_destructor(void *v_doomed) * same node. */ my_container = (struct ao2_container_rbtree *) doomed->common.my_container; + ast_assert(is_ao2_object(my_container)); + __adjust_lock(my_container, AO2_LOCK_REQ_WRLOCK, 1); #if defined(AO2_DEBUG) |