Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Dec 2019 15:38:11 +0000 (UTC)
From:      Cy Schubert <cy@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r520515 - in head/net/libpcap: . files
Message-ID:  <201912201538.xBKFcBOv090386@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cy
Date: Fri Dec 20 15:38:11 2019
New Revision: 520515
URL: https://svnweb.freebsd.org/changeset/ports/520515

Log:
  Fix libpcap issue #893: check for invalid IPv4 addresses.
  
  This fixes errors such as:
  
  tcpdump -i lagg0 net 999.999.999.999
  
  This was originally discovered on a Red Hat 7.7 server and verified
  to also be a bug on FreeBSD.
  
  PR:		242719
  Submitted by:	cy
  Reported by:	cy
  Approved by:	garga (maintainer)
  Obtained from:	https://github.com/the-tcpdump-group/libpcap/commit/ \
  		07070918d5e81a515315b395f334e52589fe0fb
  Fixed by:	https://github.com/guyharris

Added:
  head/net/libpcap/files/patch-gencode.c   (contents, props changed)
  head/net/libpcap/files/patch-nametoaddr.c   (contents, props changed)
Modified:
  head/net/libpcap/Makefile   (contents, props changed)

Modified: head/net/libpcap/Makefile
==============================================================================
--- head/net/libpcap/Makefile	Fri Dec 20 15:06:52 2019	(r520514)
+++ head/net/libpcap/Makefile	Fri Dec 20 15:38:11 2019	(r520515)
@@ -3,6 +3,7 @@
 
 PORTNAME=	libpcap
 PORTVERSION=	1.9.1
+PORTREVISION=	1
 CATEGORIES=	net
 MASTER_SITES=	http://www.tcpdump.org/release/
 

Added: head/net/libpcap/files/patch-gencode.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/libpcap/files/patch-gencode.c	Fri Dec 20 15:38:11 2019	(r520515)
@@ -0,0 +1,33 @@
+diff --git a/gencode.c b/gencode.c
+index bdc35e64..040a5531 100644
+--- gencode.c
++++ gencode.c
+@@ -6947,11 +6947,15 @@ gen_mcode(compiler_state_t *cstate, const char *s1, const char *s2,
+ 		return (NULL);
+ 
+ 	nlen = __pcap_atoin(s1, &n);
++	if (nlen < 0)
++		bpf_error(cstate, "invalid IPv4 address '%s'", s1);
+ 	/* Promote short ipaddr */
+ 	n <<= 32 - nlen;
+ 
+ 	if (s2 != NULL) {
+ 		mlen = __pcap_atoin(s2, &m);
++		if (mlen < 0)
++			bpf_error(cstate, "invalid IPv4 address '%s'", s2);
+ 		/* Promote short ipaddr */
+ 		m <<= 32 - mlen;
+ 		if ((n & ~m) != 0)
+@@ -7009,8 +7013,11 @@ gen_ncode(compiler_state_t *cstate, const char *s, bpf_u_int32 v, struct qual q)
+ 		vlen = __pcap_atodn(s, &v);
+ 		if (vlen == 0)
+ 			bpf_error(cstate, "malformed decnet address '%s'", s);
+-	} else
++	} else {
+ 		vlen = __pcap_atoin(s, &v);
++		if (vlen < 0)
++			bpf_error(cstate, "invalid IPv4 address '%s'", s);
++	}
+ 
+ 	switch (q.addr) {
+ 

Added: head/net/libpcap/files/patch-nametoaddr.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/libpcap/files/patch-nametoaddr.c	Fri Dec 20 15:38:11 2019	(r520515)
@@ -0,0 +1,21 @@
+diff --git a/nametoaddr.c b/nametoaddr.c
+index 53070a28..13bf4c68 100644
+--- nametoaddr.c
++++ nametoaddr.c
+@@ -674,8 +674,15 @@ __pcap_atoin(const char *s, bpf_u_int32 *addr)
+ 	len = 0;
+ 	for (;;) {
+ 		n = 0;
+-		while (*s && *s != '.')
++		while (*s && *s != '.') {
++			if (n > 25) {
++				/* The result will be > 255 */
++				return -1;
++			}
+ 			n = n * 10 + *s++ - '0';
++		}
++		if (n > 255)
++			return -1;
+ 		*addr <<= 8;
+ 		*addr |= n & 0xff;
+ 		len += 8;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912201538.xBKFcBOv090386>