2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-29 13:38:26 +00:00

746. [bug] The sdb didn't clone rdatasets properly, causing

a crash when the server followed delegations. [RT #905]
This commit is contained in:
Brian Wellington 2001-02-20 23:20:44 +00:00
parent 23ffed7653
commit a012d6dbfb
2 changed files with 24 additions and 2 deletions

View File

@ -1,3 +1,6 @@
746. [bug] The sdb didn't clone rdatasets properly, causing
a crash when the server followed delegations. [RT #905]
745. [func] Report the owner name of records that fail
semantic checks while loading.

View File

@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: sdb.c,v 1.27 2001/02/14 00:29:16 gson Exp $ */
/* $Id: sdb.c,v 1.28 2001/02/20 23:20:44 bwelling Exp $ */
#include <config.h>
@ -1252,12 +1252,24 @@ disassociate(dns_rdataset_t *rdataset) {
isc__rdatalist_disassociate(rdataset);
}
static void
rdataset_clone(dns_rdataset_t *source, dns_rdataset_t *target) {
dns_dbnode_t *node = source->private5;
dns_sdbnode_t *sdbnode = (dns_sdbnode_t *) node;
dns_db_t *db = (dns_db_t *) sdbnode->sdb;
dns_dbnode_t *tempdb = NULL;
isc__rdatalist_clone(source, target);
attachnode(db, node, &tempdb);
source->private5 = tempdb;
}
static dns_rdatasetmethods_t methods = {
disassociate,
isc__rdatalist_first,
isc__rdatalist_next,
isc__rdatalist_current,
isc__rdatalist_clone,
rdataset_clone,
isc__rdatalist_count
};
@ -1266,6 +1278,13 @@ list_tordataset(dns_rdatalist_t *rdatalist,
dns_db_t *db, dns_dbnode_t *node,
dns_rdataset_t *rdataset)
{
/*
* The sdb rdataset is an rdatalist with some additions.
* - private1 & private2 are used by the rdatalist.
* - private3 & private 4 are unused.
* - private5 is the node.
*/
/* This should never fail. */
RUNTIME_CHECK(dns_rdatalist_tordataset(rdatalist, rdataset) ==
ISC_R_SUCCESS);