components/bind/patches/004-RT9171.patch
author Stacey Marshall <Stacey.Marshall@Oracle.COM>
Sat, 12 Dec 2015 18:15:20 +0000
branchs11u3-sru
changeset 5206 017801f50a3b
permissions -rw-r--r--
22338063 Upgrade BIND to 9.6-ESV-R11-P4 22269064 problem in SERVICE/DNS-SERVER
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5206
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
     1
This patch was derived from ISC source differences between bind-9.9.8
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
     2
and bind-9.9.8-P1.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
     3
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
     4
diff -u -r bind-9.6-ESV-R11/CHANGES security_fix/CHANGES
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
     5
--- bind-9.6-ESV-R11/CHANGES	2015-11-25 10:51:09.302761399 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
     6
+++ security_fix/CHANGES	2015-11-25 11:09:12.099398001 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
     7
@@ -1,3 +1,10 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
     8
+	--- 9.6-ESV-R11-P4 released ---
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
     9
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    10
+4260.	[security]	Insufficient testing when parsing a message allowed
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    11
+			records with an incorrect class to be be accepted,
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    12
+			triggering a REQUIRE failure when those records
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    13
+			were subsequently cached. (CVE-2015-8000) [RT #40987]
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    14
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    15
 	--- 9.6-ESV-R11-P3 released ---
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    16
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    17
 4168.	[security]	A buffer accounting error could trigger an
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    18
diff -u -r bind-9.6-ESV-R11/lib/dns/include/dns/message.h security_fix/lib/dns/include/dns/message.h
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    19
--- bind-9.6-ESV-R11/lib/dns/include/dns/message.h	2014-01-27 19:00:45.000000000 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    20
+++ security_fix/lib/dns/include/dns/message.h	2015-11-25 10:36:05.092923013 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    21
@@ -15,8 +15,6 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    22
  * PERFORMANCE OF THIS SOFTWARE.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    23
  */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    24
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    25
-/* $Id$ */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    26
-
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    27
 #ifndef DNS_MESSAGE_H
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    28
 #define DNS_MESSAGE_H 1
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    29
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    30
@@ -207,6 +205,8 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    31
 	unsigned int			verify_attempted : 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    32
 	unsigned int			free_query : 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    33
 	unsigned int			free_saved : 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    34
+	unsigned int			tkey : 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    35
+	unsigned int			rdclass_set : 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    36
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    37
 	unsigned int			opt_reserved;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    38
 	unsigned int			sig_reserved;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    39
@@ -1363,6 +1363,15 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    40
  * \li	 other.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    41
  */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    42
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    43
+void
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    44
+dns_message_setclass(dns_message_t *msg, dns_rdataclass_t rdclass);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    45
+/*%<
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    46
+ * Set the expected class of records in the response.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    47
+ *
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    48
+ * Requires:
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    49
+ * \li   msg be a valid message with parsing intent.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    50
+ */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    51
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    52
 ISC_LANG_ENDDECLS
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    53
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    54
 #endif /* DNS_MESSAGE_H */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    55
diff -u -r bind-9.6-ESV-R11/lib/dns/message.c security_fix/lib/dns/message.c
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    56
--- bind-9.6-ESV-R11/lib/dns/message.c	2014-01-27 19:00:45.000000000 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    57
+++ security_fix/lib/dns/message.c	2015-11-25 10:36:05.089305076 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    58
@@ -436,6 +436,8 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    59
 	m->saved.base = NULL;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    60
 	m->saved.length = 0;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    61
 	m->free_saved = 0;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    62
+	m->tkey = 0;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    63
+	m->rdclass_set = 0;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    64
 	m->querytsig = NULL;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    65
 }
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    66
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    67
@@ -1084,13 +1086,19 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    68
 		 * If this class is different than the one we already read,
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    69
 		 * this is an error.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    70
 		 */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    71
-		if (msg->state == DNS_SECTION_ANY) {
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    72
-			msg->state = DNS_SECTION_QUESTION;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    73
+		if (msg->rdclass_set == 0) {
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    74
 			msg->rdclass = rdclass;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    75
+			msg->rdclass_set = 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    76
 		} else if (msg->rdclass != rdclass)
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    77
 			DO_FORMERR;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    78
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    79
 		/*
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    80
+		 * Is this a TKEY query?
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    81
+		 */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    82
+		if (rdtype == dns_rdatatype_tkey)
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    83
+			msg->tkey = 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    84
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    85
+		/*
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    86
 		 * Can't ask the same question twice.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    87
 		 */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    88
 		result = dns_message_find(name, rdclass, rdtype, 0, NULL);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    89
@@ -1234,12 +1242,12 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    90
 		 * If there was no question section, we may not yet have
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    91
 		 * established a class.  Do so now.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    92
 		 */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    93
-		if (msg->state == DNS_SECTION_ANY &&
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    94
+		if (msg->rdclass_set == 0 &&
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    95
 		    rdtype != dns_rdatatype_opt &&	/* class is UDP SIZE */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    96
 		    rdtype != dns_rdatatype_tsig &&	/* class is ANY */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    97
 		    rdtype != dns_rdatatype_tkey) {	/* class is undefined */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    98
 			msg->rdclass = rdclass;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
    99
-			msg->state = DNS_SECTION_QUESTION;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   100
+			msg->rdclass_set = 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   101
 		}
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   102
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   103
 		/*
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   104
@@ -1249,7 +1257,7 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   105
 		if (msg->opcode != dns_opcode_update
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   106
 		    && rdtype != dns_rdatatype_tsig
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   107
 		    && rdtype != dns_rdatatype_opt
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   108
-		    && rdtype != dns_rdatatype_dnskey /* in a TKEY query */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   109
+		    && rdtype != dns_rdatatype_key /* in a TKEY query */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   110
 		    && rdtype != dns_rdatatype_sig /* SIG(0) */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   111
 		    && rdtype != dns_rdatatype_tkey /* Win2000 TKEY */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   112
 		    && msg->rdclass != dns_rdataclass_any
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   113
@@ -1257,6 +1265,16 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   114
 			DO_FORMERR;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   115
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   116
 		/*
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   117
+		 * If this is not a TKEY query/response then the KEY
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   118
+		 * record's class needs to match.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   119
+		 */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   120
+		if (msg->opcode != dns_opcode_update && !msg->tkey &&
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   121
+		    rdtype == dns_rdatatype_key &&
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   122
+		    msg->rdclass != dns_rdataclass_any &&
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   123
+		    msg->rdclass != rdclass)
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   124
+			DO_FORMERR;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   125
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   126
+		/*
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   127
 		 * Special type handling for TSIG, OPT, and TKEY.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   128
 		 */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   129
 		if (rdtype == dns_rdatatype_tsig) {
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   130
@@ -1370,6 +1388,10 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   131
 				skip_name_search = ISC_TRUE;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   132
 				skip_type_search = ISC_TRUE;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   133
 				issigzero = ISC_TRUE;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   134
+			} else {
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   135
+				if (msg->rdclass != dns_rdataclass_any &&
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   136
+				    msg->rdclass != rdclass)
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   137
+					DO_FORMERR;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   138
 			}
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   139
 		} else
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   140
 			covers = 0;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   141
@@ -1608,6 +1630,7 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   142
 	msg->counts[DNS_SECTION_ADDITIONAL] = isc_buffer_getuint16(source);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   143
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   144
 	msg->header_ok = 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   145
+	msg->state = DNS_SECTION_QUESTION;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   146
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   147
 	/*
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   148
 	 * -1 means no EDNS.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   149
@@ -3491,3 +3514,15 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   150
 		dns_message_puttemprdatalist(message, &rdatalist);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   151
 	return (result);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   152
 }
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   153
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   154
+void
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   155
+dns_message_setclass(dns_message_t *msg, dns_rdataclass_t rdclass) {
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   156
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   157
+	REQUIRE(DNS_MESSAGE_VALID(msg));
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   158
+	REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTPARSE);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   159
+	REQUIRE(msg->state == DNS_SECTION_ANY);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   160
+	REQUIRE(msg->rdclass_set == 0);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   161
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   162
+	msg->rdclass = rdclass;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   163
+	msg->rdclass_set = 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   164
+}
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   165
diff -u -r bind-9.6-ESV-R11/lib/dns/resolver.c security_fix/lib/dns/resolver.c
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   166
--- bind-9.6-ESV-R11/lib/dns/resolver.c	2015-11-25 10:51:09.306905077 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   167
+++ security_fix/lib/dns/resolver.c	2015-11-25 10:48:57.126663153 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   168
@@ -6614,6 +6614,8 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   169
 			goto done;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   170
 	}
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   171
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   172
+	dns_message_setclass(message, fctx->res->rdclass);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   173
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   174
 	result = dns_message_parse(message, &devent->buffer, 0);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   175
 	if (result != ISC_R_SUCCESS) {
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   176
 		switch (result) {
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   177
@@ -6686,6 +6690,12 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   178
 	 */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   179
 	log_packet(message, ISC_LOG_DEBUG(10), fctx->res->mctx);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   180
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   181
+	if (message->rdclass != fctx->res->rdclass) {
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   182
+		resend = ISC_TRUE;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   183
+		FCTXTRACE("bad class");
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   184
+		goto done;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   185
+	}
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   186
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   187
 	/*
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   188
 	 * Process receive opt record.
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   189
 	 */
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   190
diff -u -r bind-9.6-ESV-R11/lib/dns/xfrin.c security_fix/lib/dns/xfrin.c
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   191
--- bind-9.6-ESV-R11/lib/dns/xfrin.c	2014-01-27 19:00:45.000000000 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   192
+++ security_fix/lib/dns/xfrin.c	2015-11-25 10:36:05.092532938 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   193
@@ -1205,6 +1205,8 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   194
 	msg->tsigctx = xfr->tsigctx;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   195
 	xfr->tsigctx = NULL;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   196
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   197
+	dns_message_setclass(msg, xfr->rdclass);
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   198
+
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   199
 	if (xfr->nmsg > 0)
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   200
 		msg->tcp_continuation = 1;
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   201
 
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   202
--- bind-9.6-ESV-R11/version	2015-08-24 00:18:24.000000000 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   203
+++ security_fix/version	2015-11-25 10:36:05.092532938 +0000
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   204
@@ -10,4 +10,4 @@
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   205
 PATCHVER=
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   206
 RELEASETYPE=-ESV
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   207
 RELEASEVER=-R11
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   208
-EXTENSIONS=-P3
017801f50a3b 22338063 Upgrade BIND to 9.6-ESV-R11-P4
Stacey Marshall <Stacey.Marshall@Oracle.COM>
parents:
diff changeset
   209
+EXTENSIONS=-P4