diff --git a/Pcap++/src/PcapLiveDeviceList.cpp b/Pcap++/src/PcapLiveDeviceList.cpp index de2a43aa95..5723caf088 100644 --- a/Pcap++/src/PcapLiveDeviceList.cpp +++ b/Pcap++/src/PcapLiveDeviceList.cpp @@ -281,7 +281,7 @@ std::vector& PcapLiveDeviceList::getDnsServers() PcapLiveDevice* PcapLiveDeviceList::getPcapLiveDeviceByIp(const char* ipAddrAsString) { IPAddress::Ptr_t apAddr = IPAddress::fromString(ipAddrAsString); - if (!apAddr->isValid()) + if (apAddr.get() == NULL || !apAddr->isValid()) { LOG_ERROR("IP address illegal"); return NULL; diff --git a/Tests/Pcap++Test/main.cpp b/Tests/Pcap++Test/main.cpp index 3bf52710ac..26c4ee01ba 100644 --- a/Tests/Pcap++Test/main.cpp +++ b/Tests/Pcap++Test/main.cpp @@ -1268,6 +1268,15 @@ PCAPP_TEST(TestPcapLiveDevice) PCAPP_TEST_PASSED; } +PCAPP_TEST(TestPcapLiveDeviceByInvalidIp) +{ + PcapLiveDevice* liveDev = NULL; + liveDev = PcapLiveDeviceList::getInstance().getPcapLiveDeviceByIp("eth0"); + PCAPP_ASSERT(liveDev == NULL, "Cannot get live device by invalid Ip"); + + PCAPP_TEST_PASSED; +} + PCAPP_TEST(TestPcapLiveDeviceNoNetworking) { PcapLiveDevice* liveDev = NULL; @@ -5593,6 +5602,7 @@ int main(int argc, char* argv[]) PCAPP_RUN_TEST(TestPcapLiveDeviceStatsMode, args, true); PCAPP_RUN_TEST(TestPcapLiveDeviceBlockingMode, args, true); PCAPP_RUN_TEST(TestWinPcapLiveDevice, args, true); + PCAPP_RUN_TEST(TestPcapLiveDeviceByInvalidIp, args, false); PCAPP_RUN_TEST(TestPcapFilters, args, true); PCAPP_RUN_TEST(TestSendPacket, args, true); PCAPP_RUN_TEST(TestSendPackets, args, true);