diff options
Diffstat (limited to 'bind99-ISC-Bugs-35080.patch')
| -rw-r--r-- | bind99-ISC-Bugs-35080.patch | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/bind99-ISC-Bugs-35080.patch b/bind99-ISC-Bugs-35080.patch deleted file mode 100644 index 14c383f..0000000 --- a/bind99-ISC-Bugs-35080.patch +++ /dev/null @@ -1,42 +0,0 @@ -commit 3a2ea636103eaf40404fb82f228605d384c36434 -Author: Mark Andrews <marka@isc.org> -Date: Tue Dec 17 09:08:59 2013 +1100 - - 3692. [bug] Two calls to dns_db_getoriginnode were fatal if there - was no data at the node. [RT #35080] - - (cherry picked from commit 161e803a5608956271d8120be37a1b383d14b647) - -diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c -index 2dd4aa0..941b77e 100644 ---- a/lib/dns/rbtdb.c -+++ b/lib/dns/rbtdb.c -@@ -1638,8 +1638,11 @@ decrement_reference(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node, - - nodelock = &rbtdb->node_locks[bucket]; - -+#define KEEP_NODE(n, r) \ -+ ((n)->data != NULL || (n)->down != NULL || (n) == (r)->origin_node) -+ - /* Handle easy and typical case first. */ -- if (!node->dirty && (node->data != NULL || node->down != NULL)) { -+ if (!node->dirty && KEEP_NODE(node, rbtdb)) { - dns_rbtnode_refdecrement(node, &nrefs); - INSIST((int)nrefs >= 0); - if (nrefs == 0) { -@@ -1708,12 +1711,11 @@ decrement_reference(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node, - isc_refcount_decrement(&nodelock->references, &refs); - INSIST((int)refs >= 0); - -- /* -- * XXXDCL should this only be done for cache zones? -- */ -- if (node->data != NULL || node->down != NULL) -+ if (KEEP_NODE(node, rbtdb)) - goto restore_locks; - -+#undef KEEP_NODE -+ - if (write_locked) { - /* - * We can now delete the node. |
