summaryrefslogtreecommitdiffstats
path: root/src/set.c
diff options
context:
space:
mode:
authorAlvaro Neira <alvaroneay@gmail.com>2015-01-12 14:46:14 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2015-01-15 13:04:46 +0100
commit1fc12719b6d878622e25825ef32615f281bb5e4d (patch)
treebdc7b855093bab8c26faf42118ad7dd628237084 /src/set.c
parentf9c72b4641bedf6f5b2fc4aefc42887e1884ed63 (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.c')
-rw-r--r--src/set.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/set.c b/src/set.c
index 2385031..61e0632 100644
--- a/src/set.c
+++ b/src/set.c
@@ -1020,7 +1020,10 @@ struct nft_set_list_iter *nft_set_list_iter_create(struct nft_set_list *l)
return NULL;
iter->list = l;
- iter->cur = list_entry(l->list.next, struct nft_set, head);
+ if (nft_set_list_is_empty(l))
+ iter->cur = NULL;
+ else
+ iter->cur = list_entry(l->list.next, struct nft_set, head);
return iter;
}
@@ -1036,6 +1039,9 @@ struct nft_set *nft_set_list_iter_next(struct nft_set_list_iter *iter)
{
struct nft_set *s = iter->cur;
+ if (s == NULL)
+ return NULL;
+
/* get next rule, if any */
iter->cur = list_entry(iter->cur->head.next, struct nft_set, head);
if (&iter->cur->head == iter->list->list.next)