From: <abe...@us...> - 2015-04-10 13:17:45
|
Revision: 7034 http://sourceforge.net/p/astlinux/code/7034 Author: abelbeck Date: 2015-04-10 13:17:43 +0000 (Fri, 10 Apr 2015) Log Message: ----------- dnsmasq, add upstream patch to fix crash on receipt of certain malformed DNS requests, no CVE number assigned at this time Ref: http://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commit;h=ad4a8ff7d9097008d7623df8543df435bfddeac8 Added Paths: ----------- branches/1.0/package/dnsmasq/dnsmasq-fix-crash-malformed-request.patch Added: branches/1.0/package/dnsmasq/dnsmasq-fix-crash-malformed-request.patch =================================================================== --- branches/1.0/package/dnsmasq/dnsmasq-fix-crash-malformed-request.patch (rev 0) +++ branches/1.0/package/dnsmasq/dnsmasq-fix-crash-malformed-request.patch 2015-04-10 13:17:43 UTC (rev 7034) @@ -0,0 +1,34 @@ +diff --git a/src/rfc1035.c b/src/rfc1035.c +index 7a07b0c..a995ab5 100644 +--- a/src/rfc1035.c ++++ b/src/rfc1035.c +@@ -1198,7 +1198,10 @@ unsigned int extract_request(struct dns_header *header, size_t qlen, char *name, + size_t setup_reply(struct dns_header *header, size_t qlen, + struct all_addr *addrp, unsigned int flags, unsigned long ttl) + { +- unsigned char *p = skip_questions(header, qlen); ++ unsigned char *p; ++ ++ if (!(p = skip_questions(header, qlen))) ++ return 0; + + /* clear authoritative and truncated flags, set QR flag */ + header->hb3 = (header->hb3 & ~(HB3_AA | HB3_TC)) | HB3_QR; +@@ -1214,7 +1217,7 @@ size_t setup_reply(struct dns_header *header, size_t qlen, + SET_RCODE(header, NOERROR); /* empty domain */ + else if (flags == F_NXDOMAIN) + SET_RCODE(header, NXDOMAIN); +- else if (p && flags == F_IPV4) ++ else if (flags == F_IPV4) + { /* we know the address */ + SET_RCODE(header, NOERROR); + header->ancount = htons(1); +@@ -1222,7 +1225,7 @@ size_t setup_reply(struct dns_header *header, size_t qlen, + add_resource_record(header, NULL, NULL, sizeof(struct dns_header), &p, ttl, NULL, T_A, C_IN, "4", addrp); + } + #ifdef HAVE_IPV6 +- else if (p && flags == F_IPV6) ++ else if (flags == F_IPV6) + { + SET_RCODE(header, NOERROR); + header->ancount = htons(1); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |