diff options
author | Alvaro Neira <alvaroneay@gmail.com> | 2015-01-12 14:46:14 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2015-01-15 13:04:46 +0100 |
commit | 1fc12719b6d878622e25825ef32615f281bb5e4d (patch) | |
tree | bdc7b855093bab8c26faf42118ad7dd628237084 /src/set_elem.c | |
parent | f9c72b4641bedf6f5b2fc4aefc42887e1884ed63 (diff) |
src: don't create iterator with empty list
Currently, we create iterator without test if the list is empty. If the
list is empty, we have a crash when we set up the current element. With
this patch, we test if the list is empty before to create the iterator.
If the list is empty the iterator return NULL.
Signed-off-by: Alvaro Neira Ayuso <alvaroneay@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/set_elem.c')
-rw-r--r-- | src/set_elem.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/set_elem.c b/src/set_elem.c index 95f12bf..4f52b1a 100644 --- a/src/set_elem.c +++ b/src/set_elem.c @@ -690,7 +690,11 @@ struct nft_set_elems_iter *nft_set_elems_iter_create(struct nft_set *s) iter->set = s; iter->list = &s->element_list; - iter->cur = list_entry(s->element_list.next, struct nft_set_elem, head); + if (list_empty(&s->element_list)) + iter->cur = NULL; + else + iter->cur = list_entry(s->element_list.next, + struct nft_set_elem, head); return iter; } @@ -706,6 +710,9 @@ struct nft_set_elem *nft_set_elems_iter_next(struct nft_set_elems_iter *iter) { struct nft_set_elem *s = iter->cur; + if (s == NULL) + return NULL; + iter->cur = list_entry(iter->cur->head.next, struct nft_set_elem, head); if (&iter->cur->head == iter->list->next) return NULL; |