mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-24 15:47:18 -04:00
the TSIG key name shouldn't be created with dns_name_dup
This commit is contained in:
parent
069104dd6a
commit
2c12fc4d63
1 changed files with 23 additions and 7 deletions
|
|
@ -16,7 +16,7 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
* $Id: tsig.c,v 1.14 1999/10/07 21:51:49 bwelling Exp $
|
||||
* $Id: tsig.c,v 1.15 1999/10/08 16:39:17 bwelling Exp $
|
||||
* Principal Author: Brian Wellington
|
||||
*/
|
||||
|
||||
|
|
@ -172,7 +172,7 @@ dns_tsig_sign(dns_message_t *msg) {
|
|||
dns_rdata_t *rdata;
|
||||
dns_rdatalist_t *datalist;
|
||||
dns_rdataset_t *dataset;
|
||||
isc_region_t r;
|
||||
isc_region_t r, r2;
|
||||
isc_stdtime_t now;
|
||||
dst_context_t ctx;
|
||||
isc_mem_t *mctx;
|
||||
|
|
@ -372,11 +372,15 @@ dns_tsig_sign(dns_message_t *msg) {
|
|||
goto cleanup_signature;
|
||||
ret = isc_buffer_allocate(msg->mctx, &dynbuf, 512,
|
||||
ISC_BUFFERTYPE_BINARY);
|
||||
if (ret != ISC_R_SUCCESS) {
|
||||
isc_buffer_free(&dynbuf);
|
||||
goto cleanup_signature;
|
||||
}
|
||||
ret = dns_rdata_fromstruct(rdata, dns_rdataclass_any,
|
||||
dns_rdatatype_tsig, tsig, dynbuf);
|
||||
if (ret != ISC_R_SUCCESS) {
|
||||
isc_buffer_free(&dynbuf);
|
||||
goto cleanup_signature;
|
||||
goto cleanup_dynbuf;
|
||||
}
|
||||
|
||||
dns_message_takebuffer(msg, &dynbuf);
|
||||
|
|
@ -385,14 +389,23 @@ dns_tsig_sign(dns_message_t *msg) {
|
|||
owner = NULL;
|
||||
ret = dns_message_gettempname(msg, &owner);
|
||||
if (ret != ISC_R_SUCCESS)
|
||||
goto cleanup_signature;
|
||||
goto cleanup_dynbuf;
|
||||
dns_name_toregion(&key->name, &r);
|
||||
dynbuf = NULL;
|
||||
ret = isc_buffer_allocate(mctx, &dynbuf, r.length,
|
||||
ISC_BUFFERTYPE_BINARY);
|
||||
if (ret != ISC_R_SUCCESS)
|
||||
goto cleanup_dynbuf;
|
||||
isc_buffer_available(dynbuf, &r2);
|
||||
memcpy(r2.base, r.base, r.length);
|
||||
dns_name_init(owner, NULL);
|
||||
dns_name_clone(&key->name, owner);
|
||||
dns_name_fromregion(owner, &r2);
|
||||
dns_message_takebuffer(msg, &dynbuf);
|
||||
|
||||
datalist = NULL;
|
||||
ret = dns_message_gettemprdatalist(msg, &datalist);
|
||||
if (ret != ISC_R_SUCCESS)
|
||||
goto cleanup_signature;
|
||||
goto cleanup_dynbuf;
|
||||
datalist->rdclass = dns_rdataclass_any;
|
||||
datalist->type = dns_rdatatype_tsig;
|
||||
datalist->ttl = 0;
|
||||
|
|
@ -401,7 +414,7 @@ dns_tsig_sign(dns_message_t *msg) {
|
|||
dataset = NULL;
|
||||
ret = dns_message_gettemprdataset(msg, &dataset);
|
||||
if (ret != ISC_R_SUCCESS)
|
||||
goto cleanup_signature;
|
||||
goto cleanup_dynbuf;
|
||||
dns_rdataset_init(dataset);
|
||||
dns_rdatalist_tordataset(datalist, dataset);
|
||||
ISC_LIST_APPEND(owner->list, dataset, link);
|
||||
|
|
@ -409,6 +422,9 @@ dns_tsig_sign(dns_message_t *msg) {
|
|||
|
||||
return (ISC_R_SUCCESS);
|
||||
|
||||
cleanup_dynbuf:
|
||||
if (dynbuf != NULL)
|
||||
isc_buffer_free(&dynbuf);
|
||||
cleanup_signature:
|
||||
if (tsig->signature != NULL)
|
||||
isc_mem_put(mctx, tsig->signature, tsig->siglen);
|
||||
|
|
|
|||
Loading…
Reference in a new issue