]> granicus.if.org Git - sudo/commitdiff
Remove any existing events before freeing the event base.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 26 Oct 2013 12:55:15 +0000 (06:55 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 26 Oct 2013 12:55:15 +0000 (06:55 -0600)
common/event.c

index 4c6ad02c1ef0c51aa2e3d35de89994e0623f9750..e32cc297485ecde266130f03659fa0856abd48d0 100644 (file)
@@ -69,9 +69,16 @@ sudo_ev_base_alloc(void)
 void
 sudo_ev_base_free(struct sudo_event_base *base)
 {
+    struct sudo_event *next;
     debug_decl(sudo_ev_base_free, SUDO_DEBUG_EVENT)
+
+    /* Remove any existing events before freeing the base. */
+    TAILQ_FOREACH_SAFE(base->cur, &base->events, entries, next) {
+       sudo_ev_del(base, base->cur);
+    }
     sudo_ev_base_free_impl(base);
     efree(base);
+
     debug_return;
 }