From: W.C.A. Wijngaards Date: Fri, 5 Mar 2021 12:46:36 +0000 (+0100) Subject: - Workaround for #439: prevent loops in the reuse rbtree. X-Git-Tag: release-1.13.2rc1~247 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1bdae426eee393cf6916683f17ddd9d23a747457;p=thirdparty%2Funbound.git - Workaround for #439: prevent loops in the reuse rbtree. --- 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) {