From 52722d6cd9cbc21f558d2d704559f57e4d48f073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Mon, 24 Oct 2022 09:45:17 +0200 Subject: [PATCH] Network device discovery: fix potential crash on unregister non existing monitor --- .../hardware/network/networkdevicediscoveryimpl.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libnymea-core/hardware/network/networkdevicediscoveryimpl.cpp b/libnymea-core/hardware/network/networkdevicediscoveryimpl.cpp index ddff0b26..7c019934 100644 --- a/libnymea-core/hardware/network/networkdevicediscoveryimpl.cpp +++ b/libnymea-core/hardware/network/networkdevicediscoveryimpl.cpp @@ -259,7 +259,7 @@ void NetworkDeviceDiscoveryImpl::unregisterMonitor(const MacAddress &macAddress) } if (m_monitors.contains(macAddress)) { - NetworkDeviceMonitor *monitor = m_monitors.take(macAddress); + NetworkDeviceMonitorImpl *monitor = m_monitors.take(macAddress); qCInfo(dcNetworkDeviceDiscovery()) << "Unregister" << monitor; monitor->deleteLater(); m_monitorsReferenceCount.remove(macAddress); @@ -268,6 +268,12 @@ void NetworkDeviceDiscoveryImpl::unregisterMonitor(const MacAddress &macAddress) void NetworkDeviceDiscoveryImpl::unregisterMonitor(NetworkDeviceMonitor *networkDeviceMonitor) { + if (!networkDeviceMonitor) + return; + + if (!m_monitors.values().contains(qobject_cast(networkDeviceMonitor))) + return; + unregisterMonitor(MacAddress(networkDeviceMonitor->networkDeviceInfo().macAddress())); }