Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-6]: src/external/bsd/bind/dist Pull up following revision(s) (req...
details: https://anonhg.NetBSD.org/src/rev/6c318728b834
branches: netbsd-6
changeset: 774646:6c318728b834
user: riz <riz%NetBSD.org@localhost>
date: Tue Oct 09 23:58:08 2012 +0000
description:
Pull up following revision(s) (requested by christos in ticket #598):
external/bsd/bind/dist/version: revision 1.4
external/bsd/bind/dist/CHANGES: revision 1.7
external/bsd/bind/dist/bin/named/query.c: revision 1.9
Apply P4:
3383. [security] A certain combination of records in the RBT could
cause named to hang while populating the additional
section of a response. [RT #31090]
diffstat:
external/bsd/bind/dist/CHANGES | 6 ++
external/bsd/bind/dist/bin/named/query.c | 68 ++++++++++++++++----------------
external/bsd/bind/dist/version | 2 +-
3 files changed, 41 insertions(+), 35 deletions(-)
diffs (132 lines):
diff -r 7530d9d51979 -r 6c318728b834 external/bsd/bind/dist/CHANGES
--- a/external/bsd/bind/dist/CHANGES Tue Oct 09 23:54:57 2012 +0000
+++ b/external/bsd/bind/dist/CHANGES Tue Oct 09 23:58:08 2012 +0000
@@ -1,3 +1,9 @@
+ --- 9.9.1-P4 released ---
+
+3383. [security] A certain combination of records in the RBT could
+ cause named to hang while populating the additional
+ section of a response. [RT #31090]
+
--- 9.9.1-P3 released ---
3364. [security] Named could die on specially crafted record.
diff -r 7530d9d51979 -r 6c318728b834 external/bsd/bind/dist/bin/named/query.c
--- a/external/bsd/bind/dist/bin/named/query.c Tue Oct 09 23:54:57 2012 +0000
+++ b/external/bsd/bind/dist/bin/named/query.c Tue Oct 09 23:58:08 2012 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: query.c,v 1.7.2.1 2012/06/05 21:15:20 bouyer Exp $ */
+/* $NetBSD: query.c,v 1.7.2.2 2012/10/09 23:58:09 riz Exp $ */
/*
* Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
@@ -1121,13 +1121,6 @@
mname = NULL;
}
- /*
- * If the dns_name_t we're looking up is already in the message,
- * we don't want to trigger the caller's name replacement logic.
- */
- if (name == mname)
- mname = NULL;
-
if (mnamep != NULL)
*mnamep = mname;
@@ -1332,6 +1325,7 @@
if (dns_rdataset_isassociated(rdataset) &&
!query_isduplicate(client, fname, type, &mname)) {
if (mname != NULL) {
+ INSIST(mname != fname);
query_releasename(client, &fname);
fname = mname;
} else
@@ -1401,11 +1395,13 @@
#endif
if (!query_isduplicate(client, fname,
dns_rdatatype_a, &mname)) {
- if (mname != NULL) {
- query_releasename(client, &fname);
- fname = mname;
- } else
- need_addname = ISC_TRUE;
+ if (mname != fname) {
+ if (mname != NULL) {
+ query_releasename(client, &fname);
+ fname = mname;
+ } else
+ need_addname = ISC_TRUE;
+ }
ISC_LIST_APPEND(fname->list, rdataset, link);
added_something = ISC_TRUE;
if (sigrdataset != NULL &&
@@ -1458,11 +1454,13 @@
#endif
if (!query_isduplicate(client, fname,
dns_rdatatype_aaaa, &mname)) {
- if (mname != NULL) {
- query_releasename(client, &fname);
- fname = mname;
- } else
- need_addname = ISC_TRUE;
+ if (mname != fname) {
+ if (mname != NULL) {
+ query_releasename(client, &fname);
+ fname = mname;
+ } else
+ need_addname = ISC_TRUE;
+ }
ISC_LIST_APPEND(fname->list, rdataset, link);
added_something = ISC_TRUE;
if (sigrdataset != NULL &&
@@ -1993,22 +1991,24 @@
crdataset->type == dns_rdatatype_aaaa) {
if (!query_isduplicate(client, fname, crdataset->type,
&mname)) {
- if (mname != NULL) {
- /*
- * A different type of this name is
- * already stored in the additional
- * section. We'll reuse the name.
- * Note that this should happen at most
- * once. Otherwise, fname->link could
- * leak below.
- */
- INSIST(mname0 == NULL);
-
- query_releasename(client, &fname);
- fname = mname;
- mname0 = mname;
- } else
- need_addname = ISC_TRUE;
+ if (mname != fname) {
+ if (mname != NULL) {
+ /*
+ * A different type of this name is
+ * already stored in the additional
+ * section. We'll reuse the name.
+ * Note that this should happen at most
+ * once. Otherwise, fname->link could
+ * leak below.
+ */
+ INSIST(mname0 == NULL);
+
+ query_releasename(client, &fname);
+ fname = mname;
+ mname0 = mname;
+ } else
+ need_addname = ISC_TRUE;
+ }
ISC_LIST_UNLINK(cfname.list, crdataset, link);
ISC_LIST_APPEND(fname->list, crdataset, link);
added_something = ISC_TRUE;
diff -r 7530d9d51979 -r 6c318728b834 external/bsd/bind/dist/version
--- a/external/bsd/bind/dist/version Tue Oct 09 23:54:57 2012 +0000
+++ b/external/bsd/bind/dist/version Tue Oct 09 23:58:08 2012 +0000
@@ -7,4 +7,4 @@
MINORVER=9
PATCHVER=1
RELEASETYPE=-P
-RELEASEVER=3
+RELEASEVER=4
Home |
Main Index |
Thread Index |
Old Index