Compare commits

...

7 Commits

Author SHA1 Message Date
Andreas Gustafsson
3e50d328f0 there will be a 9.1.1rc7 after all 2001-03-27 00:22:51 +00:00
Andreas Gustafsson
21d158b173 rephrased 971. 2001-03-27 00:22:09 +00:00
Brian Wellington
347d535a7b 791. [bug] The command channel now works over IPv6. 2001-03-27 00:14:54 +00:00
Brian Wellington
66f9e4be28 pullup:
790.	[bug]		Wildcards created using dynamic update or IXFR
			could fail to match. [RT #1111]
2001-03-27 00:12:30 +00:00
Andreas Gustafsson
1c53b2d2e1 updated for 9.1.1 2001-03-26 19:15:39 +00:00
Andreas Gustafsson
a7ce849641 pullup:
786.   [bug]           When DNSSEC signing/verifying data, owner names were
                        not properly downcased.
2001-03-26 19:13:15 +00:00
Andreas Gustafsson
d9faa0ca37 pullup:
787.   [bug]           The DNSSEC tools failed to downcase domain
                        names when mapping them into file names.
2001-03-26 19:11:56 +00:00
10 changed files with 94 additions and 45 deletions

13
CHANGES
View File

@@ -1,4 +1,17 @@
--- 9.1.1rc7 released ---
791. [bug] The control channel did not work over IPv6.
790. [bug] Wildcards created using dynamic update or IXFR
could fail to match. [RT #1111]
787. [bug] The DNSSEC tools failed to downcase domain
names when mapping them into file names.
786. [bug] When DNSSEC signing/verifying data, owner names were
not properly downcased.
--- 9.1.1rc6 released ---
785. [bug] A race condition in the resolver could cause

6
README
View File

@@ -45,10 +45,10 @@ BIND 9
BIND 9.1.1rc6
BIND 9.1.1rc7
BIND 9.1.1rc6 is a release candidate for BIND 9.1.1.
It contains fixes for a number of bugs in BIND 9.1.1rc5
BIND 9.1.1rc7 is a release candidate for BIND 9.1.1.
It contains fixes for a number of bugs in BIND 9.1.1rc6
but no new features.
Features introduced in 9.1.0 included:

View File

@@ -17,7 +17,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: dnssec-makekeyset.c,v 1.45.4.1 2001/01/09 22:31:32 bwelling Exp $ */
/* $Id: dnssec-makekeyset.c,v 1.45.4.2 2001/03/26 19:11:53 gson Exp $ */
#include <config.h>
@@ -220,6 +220,7 @@ main(int argc, char *argv[]) {
for (i = 0; i < argc; i++) {
char namestr[DNS_NAME_FORMATSIZE];
dns_fixedname_t fname;
isc_buffer_t namebuf;
key = NULL;
@@ -231,7 +232,12 @@ main(int argc, char *argv[]) {
rdatalist.rdclass = dst_key_class(key);
isc_buffer_init(&namebuf, namestr, sizeof namestr);
result = dns_name_totext(dst_key_name(key), ISC_FALSE,
dns_fixedname_init(&fname);
dns_name_downcase(dst_key_name(key),
dns_fixedname_name(&fname),
NULL);
result = dns_name_totext(dns_fixedname_name(&fname),
ISC_FALSE,
&namebuf);
check_result(result, "dns_name_totext");
isc_buffer_putuint8(&namebuf, 0);

View File

@@ -17,7 +17,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: dnssec-signkey.c,v 1.45.2.1 2001/01/09 22:31:33 bwelling Exp $ */
/* $Id: dnssec-signkey.c,v 1.45.2.2 2001/03/26 19:11:55 gson Exp $ */
#include <config.h>
@@ -262,7 +262,7 @@ main(int argc, char *argv[]) {
isc_buffer_init(&b, argv[0] + strlen("keyset-"),
strlen(argv[0]) - strlen("keyset-"));
isc_buffer_add(&b, strlen(argv[0]) - strlen("keyset-"));
result = dns_name_fromtext(domain, &b, dns_rootname, ISC_FALSE, NULL);
result = dns_name_fromtext(domain, &b, dns_rootname, ISC_TRUE, NULL);
if (result != ISC_R_SUCCESS)
fatal("'%s' does not contain a valid domain name", argv[0]);
isc_buffer_init(&b, tdomain, sizeof(tdomain) - 1);

View File

@@ -17,7 +17,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: dnssec-signzone.c,v 1.126.2.2 2001/01/12 23:44:02 gson Exp $ */
/* $Id: dnssec-signzone.c,v 1.126.2.3 2001/03/26 19:11:56 gson Exp $ */
#include <config.h>
@@ -505,6 +505,7 @@ static void
opendb(const char *prefix, dns_name_t *name, dns_rdataclass_t rdclass,
dns_db_t **dbp)
{
dns_fixedname_t fname;
char filename[256];
isc_buffer_t b;
isc_result_t result;
@@ -516,7 +517,9 @@ opendb(const char *prefix, dns_name_t *name, dns_rdataclass_t rdclass,
isc_buffer_putstr(&b, "/");
}
isc_buffer_putstr(&b, prefix);
result = dns_name_totext(name, ISC_FALSE, &b);
dns_fixedname_init(&fname);
(void)dns_name_downcase(name, dns_fixedname_name(&fname), NULL);
result = dns_name_totext(dns_fixedname_name(&fname), ISC_FALSE, &b);
check_result(result, "dns_name_totext()");
if (isc_buffer_availablelength(&b) == 0) {
char namestr[DNS_NAME_FORMATSIZE];

View File

@@ -16,7 +16,7 @@
*/
/*
* $Id: dnssec.c,v 1.56.2.2 2001/01/16 22:38:42 gson Exp $
* $Id: dnssec.c,v 1.56.2.3 2001/03/26 19:12:48 gson Exp $
*/
@@ -155,6 +155,7 @@ dns_dnssec_sign(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
unsigned char data[300];
isc_uint32_t flags;
unsigned int sigsize;
dns_fixedname_t fnewname;
REQUIRE(name != NULL);
REQUIRE(dns_name_depth(name) <= 255);
@@ -223,7 +224,9 @@ dns_dnssec_sign(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
if (ret != ISC_R_SUCCESS)
goto cleanup_context;
dns_name_toregion(name, &r);
dns_fixedname_init(&fnewname);
dns_name_downcase(name, dns_fixedname_name(&fnewname), NULL);
dns_name_toregion(dns_fixedname_name(&fnewname), &r);
/*
* Create an envelope for each rdata: <name|type|class|ttl>.
@@ -363,15 +366,19 @@ dns_dnssec_verify(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
/*
* If the name is an expanded wildcard, use the wildcard name.
*/
dns_fixedname_init(&fnewname);
labels = dns_name_depth(name) - 1;
if (labels - sig.labels > 0) {
dns_fixedname_init(&fnewname);
dns_name_splitatdepth(name, sig.labels + 1, NULL,
dns_fixedname_name(&fnewname));
dns_name_toregion(dns_fixedname_name(&fnewname), &r);
dns_name_downcase(dns_fixedname_name(&fnewname),
dns_fixedname_name(&fnewname),
NULL);
}
else
dns_name_toregion(name, &r);
dns_name_downcase(name, dns_fixedname_name(&fnewname), NULL);
dns_name_toregion(dns_fixedname_name(&fnewname), &r);
/*
* Create an envelope for each rdata: <name|type|class|ttl>.

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: rbtdb.c,v 1.139.4.5 2001/03/04 23:03:22 bwelling Exp $ */
/* $Id: rbtdb.c,v 1.139.4.6 2001/03/27 00:12:30 bwelling Exp $ */
/*
* Principal Author: Bob Halley
@@ -958,6 +958,40 @@ closeversion(dns_db_t *db, dns_dbversion_t **versionp, isc_boolean_t commit) {
*versionp = NULL;
}
/*
* Add the necessary magic for the wildcard name 'name'
* to be found in 'rbtdb'.
*
* In order for wildcard matching to work correctly in
* zone_find(), we must ensure that a node for the wildcarding
* level exists in the database, and has its 'find_callback'
* and 'wild' bits set.
*
* E.g. if the wildcard name is "*.sub.example." then we
* must ensure that "sub.example." exists and is marked as
* a wildcard level.
*/
static isc_result_t
add_wildcard_magic(dns_rbtdb_t *rbtdb, dns_name_t *name) {
isc_result_t result;
dns_name_t foundname;
dns_offsets_t offsets;
unsigned int n;
dns_rbtnode_t *node = NULL;
dns_name_init(&foundname, offsets);
n = dns_name_countlabels(name);
INSIST(n >= 2);
n--;
dns_name_getlabelsequence(name, 1, n, &foundname);
result = dns_rbt_addnode(rbtdb->tree, &foundname, &node);
if (result != ISC_R_SUCCESS && result != ISC_R_EXISTS)
return (result);
node->find_callback = 1;
node->wild = 1;
return (ISC_R_SUCCESS);
}
static isc_result_t
findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create,
dns_dbnode_t **nodep)
@@ -994,6 +1028,13 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create,
dns_rbt_namefromnode(node, &nodename);
node->locknum = dns_name_hash(&nodename, ISC_TRUE) %
rbtdb->node_lock_count;
if (dns_name_iswildcard(name)) {
result = add_wildcard_magic(rbtdb, name);
if (result != ISC_R_SUCCESS) {
RWUNLOCK(&rbtdb->tree_lock, locktype);
return (result);
}
}
} else if (result != ISC_R_EXISTS) {
RWUNLOCK(&rbtdb->tree_lock, locktype);
return (result);
@@ -3695,9 +3736,6 @@ loading_addrdataset(void *arg, dns_name_t *name, dns_rdataset_t *rdataset) {
isc_result_t result;
isc_region_t region;
rdatasetheader_t *newheader;
dns_name_t foundname;
dns_offsets_t offsets;
unsigned int n;
/*
* This routine does no node locking. See comments in
@@ -3720,28 +3758,9 @@ loading_addrdataset(void *arg, dns_name_t *name, dns_rdataset_t *rdataset) {
*/
if (rdataset->type == dns_rdatatype_ns)
return (DNS_R_INVALIDNS);
/*
* In order for wildcard matching to work correctly in
* zone_find(), we must ensure that a node for the wildcarding
* level exists in the database, and has its 'find_callback'
* and 'wild' bits set.
*
* E.g. if the wildcard name is "*.sub.example." then we
* must ensure that "sub.example." exists and is marked as
* a wildcard level.
*/
dns_name_init(&foundname, offsets);
n = dns_name_countlabels(name);
INSIST(n >= 2);
n--;
dns_name_getlabelsequence(name, 1, n, &foundname);
node = NULL;
result = dns_rbt_addnode(rbtdb->tree, &foundname, &node);
if (result != ISC_R_SUCCESS && result != ISC_R_EXISTS)
result = add_wildcard_magic(rbtdb, name);
if (result != ISC_R_SUCCESS)
return (result);
node->find_callback = 1;
node->wild = 1;
}
node = NULL;
@@ -3749,6 +3768,7 @@ loading_addrdataset(void *arg, dns_name_t *name, dns_rdataset_t *rdataset) {
if (result != ISC_R_SUCCESS && result != ISC_R_EXISTS)
return (result);
if (result != ISC_R_EXISTS) {
dns_name_t foundname;
dns_name_init(&foundname, NULL);
dns_rbt_namefromnode(node, &foundname);
node->locknum = dns_name_hash(&foundname, ISC_TRUE) %

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: connection.c,v 1.36.4.2 2001/02/07 02:41:47 gson Exp $ */
/* $Id: connection.c,v 1.36.4.3 2001/03/27 00:14:52 bwelling Exp $ */
/* Principal Author: DCL */
@@ -47,7 +47,7 @@ get_address(const char *hostname, in_port_t port, isc_sockaddr_t *sockaddr) {
/*
* Is this an IPv6 numeric address?
*/
if (isc_net_probeipv6 == ISC_R_SUCCESS &&
if (isc_net_probeipv6() == ISC_R_SUCCESS &&
inet_pton(AF_INET6, hostname, &in6) == 1)
isc_sockaddr_fromin6(sockaddr, &in6, port);

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: listener.c,v 1.31.4.1 2001/01/09 22:52:59 bwelling Exp $ */
/* $Id: listener.c,v 1.31.4.2 2001/03/27 00:14:54 bwelling Exp $ */
/*
* Subroutines that support the generic listener object.
@@ -321,7 +321,7 @@ omapi_listener_listen(omapi_object_t *manager, isc_sockaddr_t *addr,
* Create a socket on which to listen.
*/
listener->socket = NULL;
result = isc_socket_create(omapi_socketmgr, PF_INET,
result = isc_socket_create(omapi_socketmgr, isc_sockaddr_pf(addr),
isc_sockettype_tcp, &listener->socket);
if (result == ISC_R_SUCCESS)

View File

@@ -1,4 +1,4 @@
# $Id: version,v 1.18.4.10 2001/03/21 18:15:34 gson Exp $
# $Id: version,v 1.18.4.12 2001/03/27 00:22:51 gson Exp $
#
# This file must follow /bin/sh rules. It is imported directly via
# configure.
@@ -7,4 +7,4 @@ MAJORVER=9
MINORVER=1
PATCHVER=1
RELEASETYPE=rc
RELEASEVER=6
RELEASEVER=7