2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-01 15:05:23 +00:00

clean up suspicious looking and incorrect uses of dns_name_fromregion

This commit is contained in:
Brian Wellington
2000-10-07 00:09:28 +00:00
parent 3ee226769d
commit d1cbf71409
10 changed files with 138 additions and 124 deletions

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: query.c,v 1.133 2000/09/28 05:48:50 marka Exp $ */
/* $Id: query.c,v 1.134 2000/10/07 00:09:16 bwelling Exp $ */
#include <config.h>
@@ -2089,6 +2089,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
dns_fixedname_t fixed;
dns_dbversion_t *version;
dns_zone_t *zone;
dns_rdata_cname_t cname;
dns_rdata_dname_t dname;
CTRACE("query_find");
@@ -2614,10 +2616,12 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
if (result != ISC_R_SUCCESS)
goto cleanup;
dns_rdataset_current(trdataset, &rdata);
r.base = rdata.data;
r.length = rdata.length;
result = dns_rdata_tostruct(&rdata, &cname, NULL);
if (result != ISC_R_SUCCESS)
goto cleanup;
dns_name_init(tname, NULL);
dns_name_fromregion(tname, &r);
dns_name_clone(&cname.cname, tname);
dns_rdata_freestruct(&cname);
query_maybeputqname(client);
client->query.qname = tname;
want_restart = ISC_TRUE;
@@ -2658,10 +2662,12 @@ query_find(ns_client_t *client, dns_fetchevent_t *event) {
if (result != ISC_R_SUCCESS)
goto cleanup;
dns_rdataset_current(trdataset, &rdata);
r.base = rdata.data;
r.length = rdata.length;
result = dns_rdata_tostruct(&rdata, &dname, NULL);
if (result != ISC_R_SUCCESS)
goto cleanup;
dns_name_init(tname, NULL);
dns_name_fromregion(tname, &r);
dns_name_clone(&dname.dname, tname);
dns_rdata_freestruct(&dname);
/*
* Construct the new qname.
*/

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: adb.c,v 1.153 2000/09/29 23:54:31 gson Exp $ */
/* $Id: adb.c,v 1.154 2000/10/07 00:09:18 bwelling Exp $ */
/*
* Implementation notes
@@ -52,6 +52,7 @@
#include <dns/log.h>
#include <dns/rdata.h>
#include <dns/rdataset.h>
#include <dns/rdatastruct.h>
#include <dns/resolver.h>
#include <dns/result.h>
@@ -976,14 +977,14 @@ set_target(dns_adb_t *adb, dns_name_t *name, dns_name_t *fname,
unsigned int nlabels, nbits;
int order;
dns_rdata_t rdata;
isc_region_t r;
dns_name_t tname;
dns_fixedname_t fixed1, fixed2;
dns_name_t *prefix, *new_target;
REQUIRE(dns_name_countlabels(target) == 0);
if (rdataset->type == dns_rdatatype_cname) {
dns_rdata_cname_t cname;
/*
* Copy the CNAME's target into the target name.
*/
@@ -991,14 +992,16 @@ set_target(dns_adb_t *adb, dns_name_t *name, dns_name_t *fname,
if (result != ISC_R_SUCCESS)
return (result);
dns_rdataset_current(rdataset, &rdata);
r.base = rdata.data;
r.length = rdata.length;
dns_name_init(&tname, NULL);
dns_name_fromregion(&tname, &r);
result = dns_name_dup(&tname, adb->mctx, target);
result = dns_rdata_tostruct(&rdata, &cname, NULL);
if (result != ISC_R_SUCCESS)
return (result);
result = dns_name_dup(&cname.cname, adb->mctx, target);
dns_rdata_freestruct(&cname);
if (result != ISC_R_SUCCESS)
return (result);
} else {
dns_rdata_dname_t dname;
INSIST(rdataset->type == dns_rdatatype_dname);
namereln = dns_name_fullcompare(name, fname, &order,
&nlabels, &nbits);
@@ -1010,10 +1013,9 @@ set_target(dns_adb_t *adb, dns_name_t *name, dns_name_t *fname,
if (result != ISC_R_SUCCESS)
return (result);
dns_rdataset_current(rdataset, &rdata);
r.base = rdata.data;
r.length = rdata.length;
dns_name_init(&tname, NULL);
dns_name_fromregion(&tname, &r);
result = dns_rdata_tostruct(&rdata, &dname, NULL);
if (result != ISC_R_SUCCESS)
return (result);
/*
* Construct the new target name.
*/
@@ -1022,10 +1024,13 @@ set_target(dns_adb_t *adb, dns_name_t *name, dns_name_t *fname,
dns_fixedname_init(&fixed2);
new_target = dns_fixedname_name(&fixed2);
result = dns_name_split(name, nlabels, nbits, prefix, NULL);
if (result != ISC_R_SUCCESS)
if (result != ISC_R_SUCCESS) {
dns_rdata_freestruct(&dname);
return (result);
result = dns_name_concatenate(prefix, &tname, new_target,
}
result = dns_name_concatenate(prefix, &dname.dname, new_target,
NULL);
dns_rdata_freestruct(&dname);
if (result != ISC_R_SUCCESS)
return (result);
result = dns_name_dup(new_target, adb->mctx, target);

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: byaddr.c,v 1.21 2000/08/26 01:36:46 bwelling Exp $ */
/* $Id: byaddr.c,v 1.22 2000/10/07 00:09:19 bwelling Exp $ */
#include <config.h>
@@ -30,6 +30,7 @@
#include <dns/events.h>
#include <dns/rdata.h>
#include <dns/rdataset.h>
#include <dns/rdatastruct.h>
#include <dns/resolver.h>
#include <dns/result.h>
#include <dns/view.h>
@@ -131,9 +132,7 @@ static inline isc_result_t
copy_ptr_targets(dns_byaddr_t *byaddr) {
isc_result_t result;
dns_name_t *name;
dns_name_t target;
dns_rdata_t rdata;
isc_region_t r;
/*
* The caller must be holding the byaddr's lock.
@@ -141,16 +140,19 @@ copy_ptr_targets(dns_byaddr_t *byaddr) {
result = dns_rdataset_first(&byaddr->rdataset);
while (result == ISC_R_SUCCESS) {
dns_rdata_ptr_t ptr;
dns_rdataset_current(&byaddr->rdataset, &rdata);
r.base = rdata.data;
r.length = rdata.length;
dns_name_init(&target, NULL);
dns_name_fromregion(&target, &r);
result = dns_rdata_tostruct(&rdata, &ptr, NULL);
if (result != ISC_R_SUCCESS)
return (result);
name = isc_mem_get(byaddr->mctx, sizeof *name);
if (name == NULL)
if (name == NULL) {
dns_rdata_freestruct(&ptr);
return (ISC_R_NOMEMORY);
}
dns_name_init(name, NULL);
result = dns_name_dup(&target, byaddr->mctx, name);
result = dns_name_dup(&ptr.ptr, byaddr->mctx, name);
dns_rdata_freestruct(&ptr);
if (result != ISC_R_SUCCESS) {
isc_mem_put(byaddr->mctx, name, sizeof *name);
return (ISC_R_NOMEMORY);
@@ -207,13 +209,13 @@ byaddr_find(dns_byaddr_t *byaddr, dns_fetchevent_t *event) {
isc_boolean_t send_event = ISC_FALSE;
isc_event_t *ievent;
dns_name_t *name, *fname, *prefix;
dns_name_t tname;
dns_fixedname_t foundname, fixed;
dns_rdata_t rdata;
isc_region_t r;
unsigned int nlabels, nbits;
int order;
dns_namereln_t namereln;
dns_rdata_cname_t cname;
dns_rdata_dname_t dname;
REQUIRE(VALID_BYADDR(byaddr));
@@ -280,12 +282,12 @@ byaddr_find(dns_byaddr_t *byaddr, dns_fetchevent_t *event) {
if (result != ISC_R_SUCCESS)
break;
dns_rdataset_current(&byaddr->rdataset, &rdata);
r.base = rdata.data;
r.length = rdata.length;
dns_name_init(&tname, NULL);
dns_name_fromregion(&tname, &r);
result = dns_name_concatenate(&tname, NULL, name,
result = dns_rdata_tostruct(&rdata, &cname, NULL);
if (result != ISC_R_SUCCESS)
break;
result = dns_name_concatenate(&cname.cname, NULL, name,
NULL);
dns_rdata_freestruct(&cname);
if (result == ISC_R_SUCCESS)
want_restart = ISC_TRUE;
break;
@@ -300,10 +302,9 @@ byaddr_find(dns_byaddr_t *byaddr, dns_fetchevent_t *event) {
if (result != ISC_R_SUCCESS)
break;
dns_rdataset_current(&byaddr->rdataset, &rdata);
r.base = rdata.data;
r.length = rdata.length;
dns_name_init(&tname, NULL);
dns_name_fromregion(&tname, &r);
result = dns_rdata_tostruct(&rdata, &dname, NULL);
if (result != ISC_R_SUCCESS)
break;
/*
* Construct the new query name and start over.
*/
@@ -311,10 +312,13 @@ byaddr_find(dns_byaddr_t *byaddr, dns_fetchevent_t *event) {
prefix = dns_fixedname_name(&fixed);
result = dns_name_split(name, nlabels, nbits, prefix,
NULL);
if (result != ISC_R_SUCCESS)
if (result != ISC_R_SUCCESS) {
dns_rdata_freestruct(&dname);
break;
result = dns_name_concatenate(prefix, &tname, name,
NULL);
}
result = dns_name_concatenate(prefix, &dname.dname,
name, NULL);
dns_rdata_freestruct(&dname);
if (result == ISC_R_SUCCESS)
want_restart = ISC_TRUE;
break;

View File

@@ -16,7 +16,7 @@
*/
/*
* $Id: dnssec.c,v 1.52 2000/09/25 23:18:54 bwelling Exp $
* $Id: dnssec.c,v 1.53 2000/10/07 00:09:20 bwelling Exp $
*/
@@ -643,8 +643,7 @@ dns_dnssec_verifymessage(isc_buffer_t *source, dns_message_t *msg,
dns_rdata_sig_t sig;
unsigned char header[DNS_MESSAGE_HEADERLEN];
dns_rdata_t rdata;
dns_name_t tname;
isc_region_t r, r2, source_r, sig_r, header_r;
isc_region_t r, source_r, sig_r, header_r;
isc_stdtime_t now;
dst_context_t *ctx = NULL;
isc_mem_t *mctx;
@@ -733,13 +732,7 @@ dns_dnssec_verifymessage(isc_buffer_t *source, dns_message_t *msg,
* the name and 10 bytes for class, type, ttl, length to get to
* the start of the rdata.
*/
r.base = source_r.base + msg->sigstart;
r.length = source_r.length - msg->sigstart;
dns_name_init(&tname, NULL);
dns_name_fromregion(&tname, &r);
dns_name_toregion(&tname, &r2);
isc_region_consume(&r, r2.length + 10);
INSIST(r.length >= sig.siglen);
dns_rdata_toregion(&rdata, &r);
r.length -= sig.siglen;
RETERR(dst_context_adddata(ctx, &r));

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: message.c,v 1.148 2000/10/06 22:02:02 bwelling Exp $ */
/* $Id: message.c,v 1.149 2000/10/07 00:09:21 bwelling Exp $ */
/***
*** Imports
@@ -440,6 +440,8 @@ msgresetsigs(dns_message_t *msg, isc_boolean_t replying) {
isc_mempool_put(msg->rdspool, msg->querytsig);
}
}
if (dns_name_dynamic(msg->tsigname))
dns_name_free(msg->tsigname, msg->mctx);
isc_mempool_put(msg->namepool, msg->tsigname);
msg->tsig = NULL;
msg->tsigname = NULL;
@@ -452,8 +454,11 @@ msgresetsigs(dns_message_t *msg, isc_boolean_t replying) {
INSIST(dns_rdataset_isassociated(msg->sig0));
dns_rdataset_disassociate(msg->sig0);
isc_mempool_put(msg->rdspool, msg->sig0);
if (msg->sig0name != NULL)
if (msg->sig0name != NULL) {
if (dns_name_dynamic(msg->sig0name))
dns_name_free(msg->sig0name, msg->mctx);
isc_mempool_put(msg->namepool, msg->sig0name);
}
msg->sig0 = NULL;
msg->sig0name = NULL;
}
@@ -2544,7 +2549,6 @@ dns_message_takebuffer(dns_message_t *msg, isc_buffer_t **buffer) {
isc_result_t
dns_message_signer(dns_message_t *msg, dns_name_t *signer) {
isc_region_t r;
isc_result_t result = ISC_R_SUCCESS;
dns_rdata_t rdata;
@@ -2582,8 +2586,7 @@ dns_message_signer(dns_message_t *msg, dns_name_t *signer) {
result = ISC_R_SUCCESS;
else
result = DNS_R_SIGINVALID;
dns_name_toregion(&sig.signer, &r);
dns_name_fromregion(signer, &r);
dns_name_clone(&sig.signer, signer);
dns_rdata_freestruct(&sig);
}
else {
@@ -2607,8 +2610,7 @@ dns_message_signer(dns_message_t *msg, dns_name_t *signer) {
result = DNS_R_NOIDENTITY;
identity = &msg->tsigkey->name;
}
dns_name_toregion(identity, &r);
dns_name_fromregion(signer, &r);
dns_name_clone(identity, signer);
dns_rdata_freestruct(&tsig);
}

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: nxt.c,v 1.21 2000/09/12 09:55:31 bwelling Exp $ */
/* $Id: nxt.c,v 1.22 2000/10/07 00:09:23 bwelling Exp $ */
#include <config.h>
@@ -28,6 +28,7 @@
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#include <dns/rdatasetiter.h>
#include <dns/rdatastruct.h>
#include <dns/result.h>
#define check_result(op, msg) \
@@ -169,23 +170,22 @@ dns_nxt_build(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node,
isc_boolean_t
dns_nxt_typepresent(dns_rdata_t *nxt, dns_rdatatype_t type) {
dns_name_t name;
isc_region_t r, r2;
unsigned char *nxt_bits;
int nxt_bits_length;
dns_rdata_nxt_t nxtstruct;
isc_result_t result;
isc_boolean_t present;
REQUIRE(nxt != NULL);
REQUIRE(nxt->type == dns_rdatatype_nxt);
REQUIRE(type < 128);
dns_rdata_toregion(nxt, &r);
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &r);
dns_name_toregion(&name, &r2);
nxt_bits = ((unsigned char *)r.base) + r2.length;
nxt_bits_length = r.length - r2.length;
if (type >= nxt_bits_length * 8)
return (ISC_FALSE);
/* This should never fail */
result = dns_rdata_tostruct(nxt, &nxtstruct, NULL);
INSIST(result == ISC_R_SUCCESS);
if (type >= nxtstruct.len * 8)
present = ISC_FALSE;
else
return (ISC_TF(bit_isset(nxt_bits, type)));
present = ISC_TF(bit_isset(nxtstruct.typebits, type));
dns_rdata_freestruct(&nxt);
return (present);
}

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: resolver.c,v 1.170 2000/10/06 18:58:18 bwelling Exp $ */
/* $Id: resolver.c,v 1.171 2000/10/07 00:09:24 bwelling Exp $ */
#include <config.h>
@@ -1300,8 +1300,6 @@ sort_finds(fetchctx_t *fctx) {
static isc_result_t
fctx_getaddresses(fetchctx_t *fctx) {
dns_rdata_t rdata;
isc_region_t r;
dns_name_t name;
isc_result_t result;
dns_resolver_t *res;
isc_stdtime_t now;
@@ -1310,6 +1308,7 @@ fctx_getaddresses(fetchctx_t *fctx) {
isc_sockaddr_t *sa;
dns_adbaddrinfo_t *ai;
isc_boolean_t pruned, all_bad;
dns_rdata_ns_t ns;
FCTXTRACE("getaddresses");
@@ -1387,9 +1386,11 @@ fctx_getaddresses(fetchctx_t *fctx) {
/*
* Extract the name from the NS record.
*/
dns_rdata_toregion(&rdata, &r);
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &r);
result = dns_rdata_tostruct(&rdata, &ns, NULL);
if (result != ISC_R_SUCCESS) {
dns_rdataset_next(&fctx->nameservers);
continue;
}
options = stdoptions;
/*
* If this name is a subdomain of the query domain, tell
@@ -1405,7 +1406,7 @@ fctx_getaddresses(fetchctx_t *fctx) {
* We don't expect this situation to happen very frequently,
* so we've chosen the simple solution.
*/
if (dns_name_issubdomain(&name, &fctx->domain))
if (dns_name_issubdomain(&ns.name, &fctx->domain))
options |= DNS_ADBFIND_STARTATROOT;
options |= DNS_ADBFIND_GLUEOK;
options |= DNS_ADBFIND_HINTOK;
@@ -1416,7 +1417,7 @@ fctx_getaddresses(fetchctx_t *fctx) {
find = NULL;
result = dns_adb_createfind(res->view->adb,
res->buckets[fctx->bucketnum].task,
fctx_finddone, fctx, &name,
fctx_finddone, fctx, &ns.name,
&fctx->domain, options, now, NULL,
res->view->dstport, &find);
if (result != ISC_R_SUCCESS) {
@@ -1462,6 +1463,7 @@ fctx_getaddresses(fetchctx_t *fctx) {
dns_adb_destroyfind(&find);
}
}
dns_rdata_freestruct(&ns);
result = dns_rdataset_next(&fctx->nameservers);
}
if (result != ISC_R_NOMORE)
@@ -3092,15 +3094,18 @@ static inline isc_result_t
cname_target(dns_rdataset_t *rdataset, dns_name_t *tname) {
isc_result_t result;
dns_rdata_t rdata;
isc_region_t r;
dns_rdata_cname_t cname;
result = dns_rdataset_first(rdataset);
if (result != ISC_R_SUCCESS)
return (result);
dns_rdataset_current(rdataset, &rdata);
dns_rdata_toregion(&rdata, &r);
result = dns_rdata_tostruct(&rdata, &cname, NULL);
if (result != ISC_R_SUCCESS)
return (result);
dns_name_init(tname, NULL);
dns_name_fromregion(tname, &r);
dns_name_clone(&cname.cname, tname);
dns_rdata_freestruct(&cname);
return (ISC_R_SUCCESS);
}
@@ -3111,38 +3116,44 @@ dname_target(dns_rdataset_t *rdataset, dns_name_t *qname, dns_name_t *oname,
{
isc_result_t result;
dns_rdata_t rdata;
isc_region_t r;
dns_name_t *dname, tname;
dns_name_t *tname;
unsigned int nlabels, nbits;
int order;
dns_namereln_t namereln;
dns_rdata_dname_t dname;
/*
* Get the target name of the DNAME.
*/
dns_fixedname_init(fixeddname);
dname = dns_fixedname_name(fixeddname);
tname = dns_fixedname_name(fixeddname);
result = dns_rdataset_first(rdataset);
if (result != ISC_R_SUCCESS)
return (result);
dns_rdataset_current(rdataset, &rdata);
dns_rdata_toregion(&rdata, &r);
dns_name_init(&tname, NULL);
dns_name_fromregion(&tname, &r);
result = dns_rdata_tostruct(&rdata, &dname, NULL);
if (result != ISC_R_SUCCESS)
return (result);
/*
* Get the prefix of qname.
*/
namereln = dns_name_fullcompare(qname, oname, &order, &nlabels,
&nbits);
if (namereln != dns_namereln_subdomain)
if (namereln != dns_namereln_subdomain) {
dns_rdata_freestruct(&dname);
return (DNS_R_FORMERR);
result = dns_name_split(qname, nlabels, nbits, dname, NULL);
if (result != ISC_R_SUCCESS)
}
result = dns_name_split(qname, nlabels, nbits, tname, NULL);
if (result != ISC_R_SUCCESS) {
dns_rdata_freestruct(&dname);
return (result);
}
return (dns_name_concatenate(dname, &tname, dname, NULL));
result = dns_name_concatenate(tname, &dname.dname, tname, NULL);
dns_rdata_freestruct(&dname);
return (result);
}
static isc_result_t

View File

@@ -16,7 +16,7 @@
*/
/*
* $Id: tkey.c,v 1.52 2000/10/06 17:08:12 bwelling Exp $
* $Id: tkey.c,v 1.53 2000/10/07 00:09:25 bwelling Exp $
*/
#include <config.h>
@@ -124,7 +124,7 @@ add_rdata_to_list(dns_message_t *msg, dns_name_t *name, dns_rdata_t *rdata,
dns_name_t *newname = NULL;
dns_rdatalist_t *newlist = NULL;
dns_rdataset_t *newset = NULL;
isc_buffer_t *tmprdatabuf = NULL, *tmpnamebuf = NULL;
isc_buffer_t *tmprdatabuf = NULL;
RETERR(dns_message_gettemprdata(msg, &newrdata));
@@ -135,14 +135,9 @@ add_rdata_to_list(dns_message_t *msg, dns_name_t *name, dns_rdata_t *rdata,
dns_rdata_fromregion(newrdata, rdata->rdclass, rdata->type, &newr);
dns_message_takebuffer(msg, &tmprdatabuf);
dns_name_toregion(name, &r);
RETERR(dns_message_gettempname(msg, &newname));
dns_name_init(newname, NULL);
RETERR(isc_buffer_allocate(msg->mctx, &tmpnamebuf, r.length));
isc_buffer_availableregion(tmpnamebuf, &newr);
memcpy(newr.base, r.base, r.length);
dns_name_fromregion(newname, &newr);
dns_message_takebuffer(msg, &tmpnamebuf);
RETERR(dns_name_dup(name, msg->mctx, newname));
RETERR(dns_message_gettemprdatalist(msg, &newlist));
newlist->rdclass = newrdata->rdclass;

View File

@@ -16,7 +16,7 @@
*/
/*
* $Id: tsig.c,v 1.91 2000/09/25 17:46:38 bwelling Exp $
* $Id: tsig.c,v 1.92 2000/10/07 00:09:27 bwelling Exp $
* Principal Author: Brian Wellington
*/
@@ -330,7 +330,7 @@ dns_tsig_sign(dns_message_t *msg) {
dns_rdata_t *rdata;
dns_rdatalist_t *datalist;
dns_rdataset_t *dataset;
isc_region_t r, r2;
isc_region_t r;
isc_stdtime_t now;
isc_mem_t *mctx;
dst_context_t *ctx = NULL;
@@ -543,16 +543,10 @@ dns_tsig_sign(dns_message_t *msg) {
ret = dns_message_gettempname(msg, &owner);
if (ret != ISC_R_SUCCESS)
goto cleanup_dynbuf;
dns_name_toregion(&key->name, &r);
dynbuf = NULL;
ret = isc_buffer_allocate(mctx, &dynbuf, r.length);
if (ret != ISC_R_SUCCESS)
goto cleanup_dynbuf;
isc_buffer_availableregion(dynbuf, &r2);
memcpy(r2.base, r.base, r.length);
dns_name_init(owner, NULL);
dns_name_fromregion(owner, &r2);
dns_message_takebuffer(msg, &dynbuf);
ret = dns_name_dup(&key->name, msg->mctx, owner);
if (ret != ISC_R_SUCCESS)
goto cleanup_owner;
datalist = NULL;
ret = dns_message_gettemprdatalist(msg, &datalist);
@@ -567,7 +561,7 @@ dns_tsig_sign(dns_message_t *msg) {
dataset = NULL;
ret = dns_message_gettemprdataset(msg, &dataset);
if (ret != ISC_R_SUCCESS)
goto cleanup_dynbuf;
goto cleanup_owner;
dns_rdataset_init(dataset);
dns_rdatalist_tordataset(datalist, dataset);
msg->tsig = dataset;
@@ -575,6 +569,9 @@ dns_tsig_sign(dns_message_t *msg) {
return (ISC_R_SUCCESS);
cleanup_owner:
if (owner != NULL)
dns_message_puttempname(msg, &owner);
cleanup_dynbuf:
if (dynbuf != NULL)
isc_buffer_free(&dynbuf);

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: validator.c,v 1.81 2000/09/12 12:01:50 bwelling Exp $ */
/* $Id: validator.c,v 1.82 2000/10/07 00:09:28 bwelling Exp $ */
#include <config.h>
@@ -361,8 +361,6 @@ nxtprovesnonexistence(dns_validator_t *val, dns_name_t *nxtname,
{
int order;
dns_rdata_t rdata;
isc_region_t r;
dns_name_t nextname;
isc_result_t result;
result = dns_rdataset_first(nxtset);
@@ -389,13 +387,14 @@ nxtprovesnonexistence(dns_validator_t *val, dns_name_t *nxtname,
}
validator_log(val, ISC_LOG_DEBUG(3), "nxt bitmask ok");
} else if (order > 0) {
dns_rdata_nxt_t nxt;
/*
* The NXT owner name is less than the nonexistent name.
*/
dns_rdata_toregion(&rdata, &r);
dns_name_init(&nextname, NULL);
dns_name_fromregion(&nextname, &r);
order = dns_name_compare(val->event->name, &nextname);
result = dns_rdata_tostruct(&rdata, &nxt, NULL);
INSIST(result == ISC_R_SUCCESS);
order = dns_name_compare(val->event->name, &nxt.next);
if (order >= 0) {
/*
* The NXT next name is less than the nonexistent
@@ -408,14 +407,16 @@ nxtprovesnonexistence(dns_validator_t *val, dns_name_t *nxtname,
dns_rdataset_current(signxtset, &rdata);
result = dns_rdata_tostruct(&rdata, &siginfo, NULL);
INSIST (result == ISC_R_SUCCESS);
if (!dns_name_equal(&siginfo.signer, &nextname)) {
if (!dns_name_equal(&siginfo.signer, &nxt.next)) {
validator_log(val, ISC_LOG_DEBUG(3),
"next name is not greater");
dns_rdata_freestruct(&nxt);
return (ISC_FALSE);
}
validator_log(val, ISC_LOG_DEBUG(3),
"nxt points to zone apex, ok");
}
dns_rdata_freestruct(&nxt);
validator_log(val, ISC_LOG_DEBUG(3),
"nxt range ok");
} else {