src/utils_llist.c: Handle unlikely corner case.
authorFlorian Forster <octo@collectd.org>
Wed, 17 Jun 2015 07:09:17 +0000 (09:09 +0200)
committerFlorian Forster <octo@collectd.org>
Wed, 17 Jun 2015 07:09:20 +0000 (09:09 +0200)
This handles the following (unlikely) case:
    (l->head == NULL) && (e == NULL)

In this case, the following code will dereference a NULL pointer:
    if (l->head == e)
      l->head = e->next;

src/utils_llist.c

index 6a0c6f0..11f838d 100644 (file)
@@ -120,6 +120,9 @@ void llist_remove (llist_t *l, llentry_t *e)
 {
        llentry_t *prev;
 
+       if ((l == NULL) || (e == NULL))
+               return;
+
        prev = l->head;
        while ((prev != NULL) && (prev->next != e))
                prev = prev->next;