From 2a7356847217432a1858a5686b67f0545102a810 Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Wed, 2 Oct 2013 11:06:08 +0200 Subject: [PATCH] utils llist: Fixed a segfault in functions doing lookups. --- src/utils/llist.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/utils/llist.c b/src/utils/llist.c index 0d61769..0af9c8c 100644 --- a/src/utils/llist.c +++ b/src/utils/llist.c @@ -121,8 +121,7 @@ llist_search(sdb_llist_t *list, { sdb_llist_elem_t *elem; - if ((! list) || (! lookup)) - return NULL; + assert(list && lookup); for (elem = list->head; elem; elem = elem->next) if (! lookup(elem->obj, user_data)) @@ -311,6 +310,9 @@ sdb_llist_search(sdb_llist_t *list, { sdb_llist_elem_t *elem; + if ((! list) || (! lookup)) + return NULL; + pthread_rwlock_rdlock(&list->lock); elem = llist_search(list, lookup, user_data); pthread_rwlock_unlock(&list->lock); @@ -348,6 +350,9 @@ sdb_llist_remove(sdb_llist_t *list, sdb_llist_elem_t *elem; sdb_object_t *obj = NULL; + if ((! list) || (! lookup)) + return NULL; + pthread_rwlock_wrlock(&list->lock); elem = llist_search(list, lookup, user_data); if (elem) -- 2.30.2