From b7a969f25d4f9ec3a262f99387ac71e38d68ff03 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Wed, 29 May 2019 11:31:51 +0200 Subject: [PATCH] pcap: Check that we don't read uninitialized memory while parsing Reported by Coverity (CID 1401629). --- pdns/dnspcap.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pdns/dnspcap.cc b/pdns/dnspcap.cc index 44a720b354..3924a698d1 100644 --- a/pdns/dnspcap.cc +++ b/pdns/dnspcap.cc @@ -133,7 +133,7 @@ try contentCode=ntohs(d_lcc->lcc_protocol); } - if(contentCode==0x0800 && d_ip->ip_p==17) { // udp + if(contentCode==0x0800 && (d_pheader.caplen >= (d_skipMediaHeader + sizeof(*d_ip))) && d_ip->ip_p==17) { // udp if (d_pheader.caplen < (d_skipMediaHeader + (4 * d_ip->ip_hl) + sizeof(*d_udp))) { d_runts++; continue; @@ -152,7 +152,7 @@ try d_correctpackets++; return true; } - else if(contentCode==0x86dd && d_ip6->ip6_ctlun.ip6_un1.ip6_un1_nxt==17) { // udpv6, we ignore anything with extension hdr + else if(contentCode==0x86dd && (d_pheader.caplen >= (d_skipMediaHeader + sizeof(*d_ip6))) && d_ip6->ip6_ctlun.ip6_un1.ip6_un1_nxt==17) { // udpv6, we ignore anything with extension hdr if (d_pheader.caplen < (d_skipMediaHeader + sizeof(struct ip6_hdr) + sizeof(struct udphdr))) { d_runts++; continue; -- 2.47.2