From a6e3e443c5b788c7d1b43a1f9118d772a5a18f8d Mon Sep 17 00:00:00 2001 From: GDR! Date: Tue, 6 Feb 2018 12:57:33 +0100 Subject: Attempt at fixing double-free in issue #50 --- main.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'main.c') diff --git a/main.c b/main.c index a16c040..2581a20 100644 --- a/main.c +++ b/main.c @@ -161,10 +161,31 @@ void tunnel_delete(tunnel *t) free(t); } +int tunnel_in_delete_queue(tunnel *t) +{ + tunnel_list *element; + + LL_FOREACH(tunnels_to_delete, element) + { + if(element->tun == t) + { + return 1; + } + } + + return 0; +} + void tunnel_queue_delete(tunnel *t) { tunnel_list *tunnel_list_entry = NULL; + if(tunnel_in_delete_queue(t)) + { + log_printf(L_DEBUG2, "Did not queue deleting tunnel #%d ptr %p - already queued\n", t->connid, t); + return; + } + log_printf(L_DEBUG2, "Queued deleting tunnel #%d ptr %p\n", t->connid, t); tunnel_list_entry = calloc(sizeof(tunnel_list), 1); -- cgit v1.2.3