components/dnsmasq/patches/04-CVE-2015-3294.patch
author saurabh.vyas@oracle.com
Fri, 17 Jul 2015 17:41:34 -0700
branchs11-update
changeset 4667 d7a7a7013e6a
parent 4398 cbed664131b5
permissions -rw-r--r--
21241598 Juno upgrade may not correctly update neutron information 21444880 When the evs information is empty neutron data model is not created in backend
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4398
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
     1
Upstream patch to address CVE-2015-3294.
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
     2
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
     3
From ad4a8ff7d9097008d7623df8543df435bfddeac8 Mon Sep 17 00:00:00 2001
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
     4
From: Simon Kelley <[email protected]>
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
     5
Date: Thu, 9 Apr 2015 21:48:00 +0100
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
     6
Subject: [PATCH] Fix crash on receipt of certain malformed DNS requests.
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
     7
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
     8
---
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
     9
 CHANGELOG     |    3 +++
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    10
 src/rfc1035.c |    9 ++++++---
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    11
 2 files changed, 9 insertions(+), 3 deletions(-)
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    12
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    13
diff --git a/CHANGELOG b/CHANGELOG
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    14
index 6aa3d85..9af6170 100644
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    15
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    16
--- a/CHANGELOG
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    17
+++ b/CHANGELOG
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    18
@@ -125,6 +125,9 @@ version 2.72
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    19
             Fix problem with --local-service option on big-endian platforms
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    20
 	    Thanks to Richard Genoud for the patch.
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    21
 
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    22
+	    Fix crash on receipt of certain malformed DNS requests. Thanks
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    23
+	    to Nick Sampanis for spotting the problem.
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    24
+	
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    25
 
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    26
 version 2.71
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    27
             Subtle change to error handling to help DNSSEC validation 
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    28
diff --git a/src/rfc1035.c b/src/rfc1035.c
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    29
index 7a07b0c..a995ab5 100644
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    30
--- a/src/rfc1035.c
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    31
+++ b/src/rfc1035.c
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    32
@@ -1198,7 +1198,10 @@ unsigned int extract_request(struct dns_header *header, size_t qlen, char *name,
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    33
 size_t setup_reply(struct dns_header *header, size_t qlen,
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    34
 		struct all_addr *addrp, unsigned int flags, unsigned long ttl)
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    35
 {
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    36
-  unsigned char *p = skip_questions(header, qlen);
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    37
+  unsigned char *p;
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    38
+
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    39
+  if (!(p = skip_questions(header, qlen)))
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    40
+    return 0;
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    41
   
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    42
   /* clear authoritative and truncated flags, set QR flag */
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    43
   header->hb3 = (header->hb3 & ~(HB3_AA | HB3_TC)) | HB3_QR;
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    44
@@ -1214,7 +1217,7 @@ size_t setup_reply(struct dns_header *header, size_t qlen,
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    45
     SET_RCODE(header, NOERROR); /* empty domain */
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    46
   else if (flags == F_NXDOMAIN)
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    47
     SET_RCODE(header, NXDOMAIN);
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    48
-  else if (p && flags == F_IPV4)
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    49
+  else if (flags == F_IPV4)
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    50
     { /* we know the address */
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    51
       SET_RCODE(header, NOERROR);
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    52
       header->ancount = htons(1);
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    53
@@ -1222,7 +1225,7 @@ size_t setup_reply(struct dns_header *header, size_t qlen,
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    54
       add_resource_record(header, NULL, NULL, sizeof(struct dns_header), &p, ttl, NULL, T_A, C_IN, "4", addrp);
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    55
     }
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    56
 #ifdef HAVE_IPV6
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    57
-  else if (p && flags == F_IPV6)
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    58
+  else if (flags == F_IPV6)
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    59
     {
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    60
       SET_RCODE(header, NOERROR);
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    61
       header->ancount = htons(1)
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    62
-- 
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    63
1.7.10.4
cbed664131b5 21093410 problem in SERVICE/DNSMASQ
saurabh.vyas@oracle.com
parents:
diff changeset
    64