From 1bdae426eee393cf6916683f17ddd9d23a747457 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 5 Mar 2021 13:46:36 +0100 Subject: [PATCH] - Workaround for #439: prevent loops in the reuse rbtree. --- doc/Changelog | 3 +++ services/outside_network.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index accfaade9..d8f88f88c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +5 March 2021: Wouter + - Workaround for #439: prevent loops in the reuse rbtree. + 4 March 2021: Wouter - iana portlist update. - Fix spurious errors about "Could not generate request: out of diff --git a/services/outside_network.c b/services/outside_network.c index 18e2c8da9..d2d8c56f5 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -892,6 +892,9 @@ reuse_tcp_remove_tree_list(struct outside_network* outnet, /* delete it from reuse tree */ (void)rbtree_delete(&outnet->tcp_reuse, reuse); reuse->node.key = NULL; + /* defend against loops on broken tree by zeroing the + * rbnode structure */ + memset(&reuse->node, 0, sizeof(reuse->node)); } /* delete from reuse list */ if(reuse->item_on_lru_list) { -- 2.47.2