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:
@@ -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.
|
||||
*/
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -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));
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
@@ -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 {
|
||||
|
Reference in New Issue
Block a user