Report information
The Basics
Id:
35080
Status:
resolved
Worked:
15 minutes
Priority:
Medium/Medium
Queue:

People
Owner:
Nobody in particular
Requestors:
Cc:
AdminCc:

BugTracker
Version Fixed:
9.6-ESV-R11, 9.8.7, 9.9.5, 9.9.5-S1, 9.10.0
Version Found:
(no value)
Versions Affected:
(no value)
Versions Planned:
(no value)
Priority:
P1 High
Severity:
S1 High
CVSS Score:
(no value)
CVE ID:
(no value)
Component:
(no value)
Area:
(no value)

Dates
Created:Fri, 29 Nov 2013 10:03:35 -0500
Updated:Wed, 16 Aug 2017 02:40:41 -0400
Closed:Fri, 14 Mar 2014 20:49:53 -0400



This bug tracker is no longer active.

Please go to our Gitlab to submit issues (both feature requests and bug reports) for active projects maintained by Internet Systems Consortium (ISC).

Due to security and confidentiality requirements, full access is limited to the primary maintainers.

CC: Tomas Hozza <thozza@redhat.com>
Subject: crash in rbtdb after two sucessive getoriginnode() calls
Date: Fri, 29 Nov 2013 16:03:07 +0100
To: bind9-bugs@isc.org
From: Petr Spacek <pspacek@redhat.com>
Hello, I have encountered a weird behavior in RBTDB implementation in BIND bind-9.9.3-P2. It seems that RBTDB gets corrupted if I do dns_db_getoriginnode(rbtdb, &node); dns_db_detachnode(rbtdb, &node); and then again: dns_db_getoriginnode(rbtdb, &node); dns_db_detachnode(rbtdb, &node); Specifically, the second call to dns_db_getoriginnode() dies with: INSIST(!((void *)((node)->deadlink.prev) != (void *)(-1))) failed Note that this happens only if the origin_node in RBTDB is empty at the moment of first dns_db_detachnode() call. The attached file reproducer_minimal.c demonstrates it. The attached file reproducer_soa.c demonstrates that RBTDB works if some record is added to the RBTDB origin_node before second dns_db_getoriginnode() call. Please see comments in the file. I'm not 100 % sure, but my guess is that empty RBT nodes are destroyed and that reference counter for origin_node doesn't count the pointer rbtdb->origin_node in RBTDB structure. The other problem is that rbtdb->origin_node is not overwritten with NULL when the old origin_node is deallocated. Does it mean that I can't call dns_db_detachnode() if the origin_node is empty? Is it a bug or a 'feature'? Thank you very much for your time. -- Petr Spacek Red Hat

Message body is not shown because sender requested not to inline it.

Message body is not shown because sender requested not to inline it.

3692. [bug] Two calls to dns_db_getoriginnode were fatal if there was no data at the node. [RT #35080]
Subject: rt35080.patch

Message body not shown because it is not plain text.