Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e50d328f0 | ||
|
|
21d158b173 | ||
|
|
347d535a7b | ||
|
|
66f9e4be28 | ||
|
|
1c53b2d2e1 | ||
|
|
a7ce849641 | ||
|
|
d9faa0ca37 |
13
CHANGES
13
CHANGES
@@ -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
6
README
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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>.
|
||||
|
||||
@@ -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) %
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
4
version
4
version
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user