diff --git a/CHANGES b/CHANGES index 915f3a4d1f..b72fa3c5af 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,12 @@ +3.1.0-dev.36 | 2019-08-13 22:42:54 +0000 + + * Replace use of deprecated pcap_lookupdev(). (Jon Siwek, Corelight) + + * Use _exit() in Reporter::FatalError. (Jon Siwek, Corelight) + + * GH-533: Use consistent "lib" install dir. (Jon Siwek, Corelight) + 3.1.0-dev.30 | 2019-08-13 13:48:47 -0700 * Add new LogAscii::gzip_file_extension option. (Tim Wojtulewicz, Corelight) diff --git a/VERSION b/VERSION index 8c1baa0e54..0eb907283f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.1.0-dev.30 +3.1.0-dev.36 diff --git a/src/iosource/pcap/Source.cc b/src/iosource/pcap/Source.cc index 119280f1e5..773d31263c 100644 --- a/src/iosource/pcap/Source.cc +++ b/src/iosource/pcap/Source.cc @@ -56,15 +56,38 @@ void PcapSource::OpenLive() char tmp_errbuf[PCAP_ERRBUF_SIZE]; // Determine interface if not specified. - if ( props.path.empty() ) - props.path = pcap_lookupdev(tmp_errbuf); - if ( props.path.empty() ) { - safe_snprintf(errbuf, sizeof(errbuf), - "pcap_lookupdev: %s", tmp_errbuf); - Error(errbuf); - return; + pcap_if_t* devs; + + if ( pcap_findalldevs(&devs, tmp_errbuf) < 0 ) + { + safe_snprintf(errbuf, sizeof(errbuf), + "pcap_findalldevs: %s", tmp_errbuf); + Error(errbuf); + return; + } + + if ( devs ) + { + props.path = devs->name; + pcap_freealldevs(devs); + + if ( props.path.empty() ) + { + safe_snprintf(errbuf, sizeof(errbuf), + "pcap_findalldevs: empty device name"); + Error(errbuf); + return; + } + } + else + { + safe_snprintf(errbuf, sizeof(errbuf), + "pcap_findalldevs: no devices found"); + Error(errbuf); + return; + } } // Determine network and netmask.