From c12c6fc1ffdfd67d27d0d862bb8f0df973431405 Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Jan 26 2016 12:16:09 +0000 Subject: fix arpwatch buffer overflow (#1301880) Resolves: #1301880 --- diff --git a/arpwatch-2.1a15-lookupiinvalid.patch b/arpwatch-2.1a15-lookupiinvalid.patch deleted file mode 100644 index c524c74..0000000 --- a/arpwatch-2.1a15-lookupiinvalid.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up ./arpwatch.c.iinval ./arpwatch.c ---- ./arpwatch.c.iinval 2012-10-15 16:55:58.646218256 +0200 -+++ ./arpwatch.c 2012-10-15 17:04:30.566199946 +0200 -@@ -171,7 +171,7 @@ try_dev(char *interface, pcap_t **pd, in - timeout = 1000; - - *pd = pcap_open_live(interface, snaplen, 1, timeout, errbuf); -- if (NULL == pd) { -+ if (NULL == *pd) { - syslog(LOG_ERR, "pcap open %s: %s", interface, errbuf); - return NULL; - } diff --git a/arpwatch-2.1a15-lookupiselect.patch b/arpwatch-2.1a15-lookupiselect.patch index cc3a5bd..08dd70e 100644 --- a/arpwatch-2.1a15-lookupiselect.patch +++ b/arpwatch-2.1a15-lookupiselect.patch @@ -1,3 +1,8 @@ +Note by jsynacek: +This patch should be rewritten. There's no reason to be using a static variable +and returning its content from a function (in iterate_dev()). Also, some things +should be simplified (like iterate_dev()). + diff -up ./arpwatch.c.iselect ./arpwatch.c --- ./arpwatch.c.iselect 2012-10-15 16:01:24.701335291 +0200 +++ ./arpwatch.c 2012-10-15 16:07:18.626322639 +0200 @@ -23,7 +28,7 @@ diff -up ./arpwatch.c.iselect ./arpwatch.c - prog, errbuf); - exit(1); + *pd = pcap_open_live(interface, snaplen, 1, timeout, errbuf); -+ if (NULL == pd) { ++ if (NULL == *pd) { + syslog(LOG_ERR, "pcap open %s: %s", interface, errbuf); + return NULL; } @@ -50,7 +55,7 @@ diff -up ./arpwatch.c.iselect ./arpwatch.c +char * +iterate_dev(char *arginterface, pcap_t **pd, int *linktype, char *errbuf) +{ -+ static char interface[IF_NAMESIZE + 1]; ++ static char interface[64 + 1]; + pcap_if_t *alldevs; + pcap_if_t *dev; diff --git a/arpwatch.spec b/arpwatch.spec index 26bc622..17bb1ea 100644 --- a/arpwatch.spec +++ b/arpwatch.spec @@ -4,12 +4,12 @@ Name: arpwatch Epoch: 14 Version: 2.1a15 -Release: 34%{?dist} +Release: 35%{?dist} Summary: Network monitoring tools for tracking IP addresses on a network Group: Applications/System License: BSD with advertising URL: http://ee.lbl.gov/ -Requires(pre): shadow-utils +Requires(pre): shadow-utils Requires(post): systemd Requires(preun): systemd Requires(postun): systemd @@ -36,7 +36,6 @@ Patch11: arpwatch-exitcode.patch Patch12: arpwatch-2.1a15-dropgroup.patch Patch13: arpwatch-2.1a15-devlookup.patch Patch14: arpwatch-2.1a15-lookupiselect.patch -Patch15: arpwatch-2.1a15-lookupiinvalid.patch Patch16: arpwatch-201301-ethcodes.patch Patch17: arpwatch-pie.patch Patch18: arpwatch-aarch64.patch @@ -68,7 +67,6 @@ network. %patch12 -p1 -b .dropgroup %patch13 -p1 -b .devlookup %patch14 -p1 -b .iselect -%patch15 -p1 -b .iinval %patch16 -p1 -b .ethcode %patch17 -p1 -b .pie %patch18 -p1 -b .aarch64 @@ -148,6 +146,9 @@ fi %attr(0644,-,arpwatch) %verify(not md5 size mtime) %config(noreplace) %{_vararpwatch}/ethercodes.dat %changelog +* Tue Jan 26 2016 Jan Synáček - 14:2.1a15-35 +- fix arpwatch buffer overflow (#1301880) + * Wed Jun 17 2015 Fedora Release Engineering - 14:2.1a15-34 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild