diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7392f9b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libpcap-1.9.1.tar.gz diff --git a/.libpcap.metadata b/.libpcap.metadata new file mode 100644 index 0000000..ac2b3df --- /dev/null +++ b/.libpcap.metadata @@ -0,0 +1 @@ +04d6e619defad5bb17af15f6d2304e79b649786c SOURCES/libpcap-1.9.1.tar.gz diff --git a/SOURCES/0001-man-tcpdump-and-tcpslice-have-manpages-in-man8.patch b/SOURCES/0001-man-tcpdump-and-tcpslice-have-manpages-in-man8.patch new file mode 100644 index 0000000..888bb9a --- /dev/null +++ b/SOURCES/0001-man-tcpdump-and-tcpslice-have-manpages-in-man8.patch @@ -0,0 +1,27 @@ +From 208bb414553d5444d82601e6fd4ca25fbb192998 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Mon, 29 Sep 2014 08:19:05 +0200 +Subject: [PATCH 1/4] man: tcpdump and tcpslice have manpages in man8 + +Both should be run only by root, hence manpages for them should be located in +/usr/share/man/man8/ +--- + pcap.3pcap.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pcap.3pcap.in b/pcap.3pcap.in +index f5a7e0c..f220e68 100644 +--- a/pcap.3pcap.in ++++ b/pcap.3pcap.in +@@ -882,7 +882,7 @@ use an + script or some other configuration script to check whether the libpcap + 1.0 APIs are available and use them only if they are. + .SH SEE ALSO +-autoconf(1), tcpdump(1), tcpslice(1), pcap-filter(@MAN_MISC_INFO@), pfconfig(8), ++autoconf(1), tcpdump(8), tcpslice(8), pcap-filter(@MAN_MISC_INFO@), pfconfig(8), + usermod(@MAN_ADMIN_COMMANDS@) + .SH AUTHORS + The original authors of libpcap are: +-- +1.8.3.1 + diff --git a/SOURCES/0002-pcap-config-mitigate-multilib-conflict.patch b/SOURCES/0002-pcap-config-mitigate-multilib-conflict.patch new file mode 100644 index 0000000..8b6b420 --- /dev/null +++ b/SOURCES/0002-pcap-config-mitigate-multilib-conflict.patch @@ -0,0 +1,88 @@ +From 5b80ca39b1f01177e98c78bbc622dfda6f7a7e71 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Mon, 29 Sep 2014 08:27:15 +0200 +Subject: [PATCH 2/4] pcap-config: mitigate multilib conflict + +libdir path is different on 64bit and 32bit arches. Hence when installing both +multilib versions on the system yum complains about conflicting pcap-config +file. + +Hence remove libdir references from pcap-config, libdir is in dynamic linker +path anyway. +--- + pcap-config.in | 27 ++++++++------------------- + 1 file changed, 8 insertions(+), 19 deletions(-) + +diff --git a/pcap-config.in b/pcap-config.in +index 206be3b..75f2c9f 100644 +--- a/pcap-config.in ++++ b/pcap-config.in +@@ -7,7 +7,6 @@ + prefix="@prefix@" + exec_prefix="@exec_prefix@" + includedir="@includedir@" +-libdir="@libdir@" + V_RPATH_OPT="@V_RPATH_OPT@" + LIBS="@LIBS@" + PACKAGE_NAME="@PACKAGE_NAME@" +@@ -36,16 +35,6 @@ do + esac + shift + done +-if [ "$V_RPATH_OPT" != "" ] +-then +- # +- # If libdir isn't /usr/lib, add it to the run-time linker path. +- # +- if [ "$libdir" != "/usr/lib" ] +- then +- RPATH=$V_RPATH_OPT$libdir +- fi +-fi + if [ "$static" = 1 ] + then + # +@@ -54,16 +43,16 @@ then + # + if [ "$show_cflags" = 1 -a "$show_libs" = 1 ] + then +- echo "-I$includedir -L$libdir -lpcap $LIBS" ++ echo "-lpcap @LIBS@" + elif [ "$show_cflags" = 1 -a "$show_additional_libs" = 1 ] + then +- echo "-I$includedir -L$libdir $LIBS" ++ echo "@LIBS@" + elif [ "$show_cflags" = 1 ] + then +- echo "-I$includedir" ++ echo "" + elif [ "$show_libs" = 1 ] + then +- echo "-L$libdir -lpcap $LIBS" ++ echo "-lpcap @LIBS@" + elif [ "$show_additional_libs" = 1 ] + then + echo "$LIBS" +@@ -75,15 +64,15 @@ else + # + if [ "$show_cflags" = 1 -a "$show_libs" = 1 ] + then +- echo "-I$includedir -L$libdir $RPATH -l$PACKAGE_NAME" ++ echo "-lpcap" + elif [ "$show_cflags" = 1 -a "$show_additional_libs" = 1 ] + then +- echo "-I$includedir" ++ echo "" + elif [ "$show_cflags" = 1 ] + then +- echo "-I$includedir" ++ echo "" + elif [ "$show_libs" = 1 ] + then +- echo "-L$libdir $RPATH -l$PACKAGE_NAME" ++ echo "-lpcap" + fi + fi +-- +1.8.3.1 + diff --git a/SOURCES/0003-pcap-linux-apparently-ctc-interfaces-on-s390-has-eth.patch b/SOURCES/0003-pcap-linux-apparently-ctc-interfaces-on-s390-has-eth.patch new file mode 100644 index 0000000..c2c9ca2 --- /dev/null +++ b/SOURCES/0003-pcap-linux-apparently-ctc-interfaces-on-s390-has-eth.patch @@ -0,0 +1,28 @@ +From b9fa92532328daad84766753422e8a21fd474e6f Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Mon, 29 Sep 2014 08:37:25 +0200 +Subject: [PATCH 3/4] pcap-linux: apparently ctc interfaces on s390 has + ethernet DLT + +--- + pcap-linux.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/pcap-linux.c b/pcap-linux.c +index 900ebbc..58292c3 100644 +--- a/pcap-linux.c ++++ b/pcap-linux.c +@@ -3197,6 +3197,10 @@ activate_new(pcap_t *handle) + handle->linktype = DLT_LINUX_SLL; + } + ++ /* Hack to make things work on s390 ctc interfaces */ ++ if (strncmp("ctc", device, 3) == 0) ++ handle->linktype = DLT_EN10MB; ++ + handlep->ifindex = iface_get_id(sock_fd, device, + handle->errbuf); + if (handlep->ifindex == -1) { +-- +1.8.3.1 + diff --git a/SOURCES/0004-invalid-IPv4-address.patch b/SOURCES/0004-invalid-IPv4-address.patch new file mode 100644 index 0000000..2712b1a --- /dev/null +++ b/SOURCES/0004-invalid-IPv4-address.patch @@ -0,0 +1,66 @@ +From 907070918d5e81a515315b395f334e52589fe0fb Mon Sep 17 00:00:00 2001 +From: Guy Harris +Date: Wed, 18 Dec 2019 15:06:53 -0800 +Subject: [PATCH] Check for invalid IPv4 addresses. + +This should fix GitHub issue #893. +--- + gencode.c | 9 ++++++++- + nametoaddr.c | 9 ++++++++- + 2 files changed, 16 insertions(+), 2 deletions(-) + +diff --git a/gencode.c b/gencode.c +index bdc35e646..040a55315 100644 +--- a/gencode.c ++++ b/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) { + +diff --git a/nametoaddr.c b/nametoaddr.c +index 53070a285..13bf4c683 100644 +--- a/nametoaddr.c ++++ b/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; + diff --git a/SPECS/libpcap.spec b/SPECS/libpcap.spec new file mode 100644 index 0000000..4687bfa --- /dev/null +++ b/SPECS/libpcap.spec @@ -0,0 +1,270 @@ +Name: libpcap +Epoch: 14 +Version: 1.9.1 +Release: 2%{?dist} +Summary: A system-independent interface for user-level packet capture +License: BSD with advertising +URL: http://www.tcpdump.org + +BuildRequires: bison +BuildRequires: bluez-libs-devel +BuildRequires: flex +BuildRequires: git +BuildRequires: glibc-kernheaders >= 2.2.0 +BuildRequires: rdma-core-devel + +Source: http://www.tcpdump.org/release/%{name}-%{version}.tar.gz + +Patch0001: 0001-man-tcpdump-and-tcpslice-have-manpages-in-man8.patch +Patch0002: 0002-pcap-config-mitigate-multilib-conflict.patch +Patch0003: 0003-pcap-linux-apparently-ctc-interfaces-on-s390-has-eth.patch +Patch0004: 0004-invalid-IPv4-address.patch + +%description +Libpcap provides a portable framework for low-level network +monitoring. Libpcap can provide network statistics collection, +security monitoring and network debugging. Since almost every system +vendor provides a different interface for packet capture, the libpcap +authors created this system-independent API to ease in porting and to +alleviate the need for several system-dependent packet capture modules +in each application. + +Install libpcap if you need to do low-level network traffic monitoring +on your network. + +%package devel +Summary: Libraries and header files for the libpcap library +Requires: %{name} = %{epoch}:%{version}-%{release} + +%description devel +Libpcap provides a portable framework for low-level network +monitoring. Libpcap can provide network statistics collection, +security monitoring and network debugging. Since almost every system +vendor provides a different interface for packet capture, the libpcap +authors created this system-independent API to ease in porting and to +alleviate the need for several system-dependent packet capture modules +in each application. + +This package provides the libraries, include files, and other +resources needed for developing libpcap applications. + +%prep +%autosetup -S git + +#sparc needs -fPIC +%ifarch %{sparc} +sed -i -e 's|-fpic|-fPIC|g' configure +%endif + +%build +export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" +%configure --enable-rdma +make %{?_smp_mflags} + +%install +make DESTDIR=$RPM_BUILD_ROOT install +rm -f $RPM_BUILD_ROOT%{_libdir}/libpcap.a + +%ldconfig_scriptlets + +%files +%defattr(-,root,root) +%license LICENSE +%doc README.md CHANGES CREDITS +%{_libdir}/libpcap.so.* +%{_mandir}/man7/pcap*.7* + +%files devel +%defattr(-,root,root) +%{_bindir}/pcap-config +%{_includedir}/pcap*.h +%{_includedir}/pcap +%{_libdir}/libpcap.so +%{_libdir}/pkgconfig/libpcap.pc +%{_mandir}/man1/pcap-config.1* +%{_mandir}/man3/pcap*.3* +%{_mandir}/man5/pcap*.5* + +%changelog +* Wed May 06 2020 Michal Ruprich - 14:1.9.1-2 +- Related: #1806422 - Building libpcap to side-tag for tcpdump + +* Thu Apr 09 2020 Michal Ruprich - 14:1.9.1-1 +- Resolves: #1806422 - rebase libpcap to version 1.9.1 +- Resolves: #1743650 - [RFE] enable inbox support for sniffing offloaded (RDMA) traffic with tcpdump +- Resolves: #1785330 - Invalid IPv4 addresses are accepted without reporting even a warning +- Resolves: #1792208 - Resource exhaustion while PHB header length validation + +* Wed Jul 03 2019 Michal Ruprich - 14:1.9.0-3 +- Resolves: #1708397 - Move libpcap.pc to libpcap-devel +- Removing obsolete group tag + +* Wed May 22 2019 Michal Ruprich - 14:1.9.0-2 +- Resolves: #1680929 - libpcap changes blocked until gating tests are added + +* Wed Aug 01 2018 Michal Ruprich - 14:1.9.0-1 +- New version 1.9.0 + +* Thu Jun 07 2018 Michal Ruprich - 14:1.8.1-9 +- Adding support for AF_VSOCK (rhbz#1587833) + +* Wed Feb 07 2018 Fedora Release Engineering - 14:1.8.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 14:1.8.1-7 +- Switch to %%ldconfig_scriptlets + +* Thu Aug 03 2017 Fedora Release Engineering - 14:1.8.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 14:1.8.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu May 18 2017 Martin Sehnoutka - 14:1.8.1-4 +- Drop TPACKET_V3 patch as it should be fixed in kernel by now + +* Fri Feb 10 2017 Fedora Release Engineering - 14:1.8.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Feb 01 2017 Stephen Gallagher - 1.8.1-2 +- Add missing %%license macro + +* Mon Oct 31 2016 Luboš Uhliarik - 14:1.8.1-1 +- new version 1.8.1 + +* Mon Aug 08 2016 Luboš Uhliarik - 14:1.8.0-1 +- new version 1.8.0 + +* Thu Feb 04 2016 Fedora Release Engineering - 14:1.7.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Jun 29 2015 Michal Sekletar - 14:1.7.4-1 +- update to 1.7.4 (#1236387) + +* Wed Jun 17 2015 Fedora Release Engineering - 14:1.7.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Tue May 26 2015 Michal Sekletar - 14:1.7.3-1 +- update to 1.7.3 (#1214723) +- fix build against bluez-5 (#1178297) + +* Fri Mar 13 2015 Michal Sekletar - 14:1.7.2-1 +- update to 1.7.2 (#1201078) + +* Mon Feb 23 2015 Michal Sekletar - 14:1.6.2-2 +- fix scaling of pcap-ng timestamps (#1169322) +- remove kernel-devel from buildrequires + +* Mon Sep 29 2014 Michal Sekletar - 14:1.6.2-1 +- update to 1.6.2 (#1124174) +- disable TPACKET_V3 support (#1131500) + +* Sun Aug 17 2014 Fedora Release Engineering - 14:1.5.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 14:1.5.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon Mar 31 2014 Michal Sekletar - 14:1.5.3-3 +- don't link against libnl + +* Fri Mar 28 2014 Michal Sekletar - 14:1.5.3-2 +- link against libnl (#765716) + +* Wed Jan 15 2014 Michal Sekletar - 14:1.5.3-1 +- update to 1.5.3 + +* Thu Nov 28 2013 Michal Sekletar - 14:1.5.1-1 +- update to 1.5.1 + +* Fri Nov 08 2013 Michal Sekletar - 14:1.5.0-1.20131108git459712e +- update to snapshot 20131108git459712e + +* Sat Aug 03 2013 Fedora Release Engineering - 14:1.4.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu Jun 06 2013 Michal Sekletar - 14:1.4.0-1 +- update to 1.4.0 + +* Tue Mar 26 2013 Michal Sekletar - 14:1.3.0-4 +- remove unused variable from pcap-config to prevent multilib conflicts +- specfile cleanup + +* Thu Feb 14 2013 Fedora Release Engineering - 14:1.3.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jul 19 2012 Fedora Release Engineering - 14:1.3.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jun 13 2012 Michal Sekletar 14:1.3.0-1 +- Update to 1.3.0 + +* Thu Jan 05 2012 Jan Synáček 14:1.2.1-2 +- Rebuilt for GCC 4.7 + +* Tue Jan 03 2012 Jan Synáček 14:1.2.1-1 +- Update to 1.2.1 +- Drop unnecessary -fragment patch + +* Fri Dec 02 2011 Michal Sekletar 14:1.2.0-1 +- update to 1.2.0 + +* Tue Sep 06 2011 Michal Sekletar 14:1.1.1-4 +- fix capture of fragmented ipv6 packets + +* Fri Apr 22 2011 Miroslav Lichvar 14:1.1.1-3 +- ignore /sys/net/dev files on ENODEV (#693943) +- drop ppp patch +- compile with -fno-strict-aliasing + +* Tue Feb 08 2011 Fedora Release Engineering - 14:1.1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Apr 06 2010 Miroslav Lichvar 14:1.1.1-1 +- update to 1.1.1 + +* Wed Dec 16 2009 Miroslav Lichvar 14:1.0.0-5.20091201git117cb5 +- update to snapshot 20091201git117cb5 + +* Sat Oct 17 2009 Dennis Gilmore 14:1.0.0-4.20090922gite154e2 +- use -fPIC on sparc arches + +* Wed Sep 23 2009 Miroslav Lichvar 14:1.0.0-3.20090922gite154e2 +- update to snapshot 20090922gite154e2 +- drop old soname + +* Fri Jul 24 2009 Fedora Release Engineering - 14:1.0.0-2.20090716git6de2de +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Jul 22 2009 Miroslav Lichvar 14:1.0.0-1.20090716git6de2de +- update to 1.0.0, git snapshot 20090716git6de2de + +* Wed Feb 25 2009 Fedora Release Engineering - 14:0.9.8-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Jun 27 2008 Miroslav Lichvar 14:0.9.8-3 +- use CFLAGS when linking (#445682) + +* Tue Feb 19 2008 Fedora Release Engineering - 14:0.9.8-2 +- Autorebuild for GCC 4.3 + +* Wed Oct 24 2007 Miroslav Lichvar 14:0.9.8-1 +- update to 0.9.8 + +* Wed Aug 22 2007 Miroslav Lichvar 14:0.9.7-3 +- update license tag + +* Wed Jul 25 2007 Jesse Keating - 14:0.9.7-2 +- Rebuild for RH #249435 + +* Tue Jul 24 2007 Miroslav Lichvar 14:0.9.7-1 +- update to 0.9.7 + +* Tue Jun 19 2007 Miroslav Lichvar 14:0.9.6-1 +- update to 0.9.6 + +* Tue Nov 28 2006 Miroslav Lichvar 14:0.9.5-1 +- split from tcpdump package (#193657) +- update to 0.9.5 +- don't package static library +- maintain soname